如何修复“无法从org.apache.hbase.classification.interfaceaudience加载任何符号”?

wvt8vs2t  于 2021-06-09  发布在  Hbase
关注(0)|答案(0)|浏览(417)

我正在尝试使用apachespark在hbase上准备一个以hfile格式存储的Dataframe。我使用的是spark 2.1.0、scala 2.11和hbase 1.1.2
这是我的密码:

val df = createDataframeFromRow(Row("mlk", "kpo", "opi"), "a b c")

val cols = df.columns.sorted
val colsorteddf = df.select(cols.map(x => col(x)): _*)
val valcols = cols.filterNot(x => x.equals("U_ID"))

到现在为止,一直都还不错。我只对数据框中的列进行排序

val pdd = colsorteddf.map(row => {
  (row(0).toString, (row(1).toString, row(2).toString))
})

val tdd = pdd.flatMap(x => {
  val rowKey = PLong.INSTANCE.toBytes(x._1)
  for(i <- 0 until valcols.length - 1) yield {
    val colname = valcols(i).toString
    val colvalue = x._2.productElement(i).toString
    val colfam = "data"

    (rowKey, (colfam, colname, colvalue))
  }
})

之后,我将每一行转换成这个键值格式(rowkey,(colfam,colname,colvalue))
不,这是问题发生的时候。我尝试将tdd的每一行Map到一对(immutablebyteswritable,keyvalue)

import org.apache.hadoop.hbase.KeyValue

val output = tdd.map(x => {
  val rowKey: Array[Byte] = x._1
  val immutableRowKey = new ImmutableBytesWritable(rowKey)
  val colfam = x._2._1
  val colname = x._2._2
  val colvalue = x._2._3

  val kv = new KeyValue(
    rowKey,
    colfam.getBytes(),
    colname.getBytes(),
    Bytes.toBytes(colvalue.toString)
  )

  (immutableRowKey, kv)
})

它呈现此堆栈跟踪:

java.lang.AssertionError: assertion failed: no symbol could be loaded from interface org.apache.hadoop.hbase.classification.InterfaceAudience$Public in object InterfaceAudience with name Public and classloader scala.reflect.internal.util.ScalaClassLoader$URLClassLoader@3269cbb7
  at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:1021)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:97)
  at scala.reflect.runtime.TwoWayCaches$TwoWayCache$$anonfun$toScala$1.apply(TwoWayCaches.scala:38)
  at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)
  at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)
  at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toScala(TwoWayCaches.scala:33)
  at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:95)
  at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:980)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy.<init>(JavaMirrors.scala:163)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$JavaAnnotationProxy$.apply(JavaMirrors.scala:162)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
  at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
  at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
  at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
  at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186)
  at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$copyAnnotations(JavaMirrors.scala:683)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$FromJavaClassCompleter.load(JavaMirrors.scala:733)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$typeParams$1.apply(SynchronizedSymbols.scala:140)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anonfun$typeParams$1.apply(SynchronizedSymbols.scala:133)
  at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)
  at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:123)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$8.gilSynchronizedIfNotThreadsafe(SynchronizedSymbols.scala:168)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$class.typeParams(SynchronizedSymbols.scala:132)
  at scala.reflect.runtime.SynchronizedSymbols$SynchronizedSymbol$$anon$8.typeParams(SynchronizedSymbols.scala:168)
  at scala.reflect.internal.Types$NoArgsTypeRef.typeParams(Types.scala:1926)
  at scala.reflect.internal.Types$NoArgsTypeRef.isHigherKinded(Types.scala:1925)
  at scala.reflect.internal.transform.UnCurry$class.scala$reflect$internal$transform$UnCurry$$expandAlias(UnCurry.scala:22)
  at scala.reflect.internal.transform.UnCurry$$anon$2.apply(UnCurry.scala:26)
  at scala.reflect.internal.transform.UnCurry$$anon$2.apply(UnCurry.scala:24)
  at scala.collection.immutable.List.loop$1(List.scala:173)
  at scala.collection.immutable.List.mapConserve(List.scala:189)
  at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:115)
  at scala.reflect.internal.transform.UnCurry$$anon$2.apply(UnCurry.scala:46)
  at scala.reflect.internal.transform.Transforms$class.transformedType(Transforms.scala:43)
  at scala.reflect.internal.SymbolTable.transformedType(SymbolTable.scala:16)
  at scala.reflect.internal.Types$TypeApiImpl.erasure(Types.scala:225)
  at scala.

好像是斯卡拉的问题。有人遇到过同样的问题吗?如果是这样的话,你是如何克服的?
ps:我正在通过spark shell运行这个代码。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题