Itry для объединения данных из файла в HDFS. Мне нужно добавить некоторые данные из этих данных со значением на определенной таблице в hbase.Получить строку на Spark на карте Call
, но у меня есть исключение:
org.apache.spark.SparkException: Task not serializable
at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:166)
at org.apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:158)
at org.apache.spark.SparkContext.clean(SparkContext.scala:1623)
at org.apache.spark.rdd.RDD.map(RDD.scala:286)
at org.apache.spark.api.java.JavaRDDLike$class.mapToPair(JavaRDDLike.scala:113)
at org.apache.spark.api.java.AbstractJavaRDDLike.mapToPair(JavaRDDLike.scala:46)
at ......
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:577)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:174)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:197)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.io.NotSerializableException: org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation
Serialization stack:
at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:38)
at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:47)
at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:80)
at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:164)
Я знаю, что проблема возникла при попытке получить доступ к HBase во время функции карты.
Мой вопрос: как заполнить мои RDD со значением, содержащимся в таблице hbase.
, например: файл в HDFS являются CSV:
Name;Number1;Number2
toto;1;2
в HBase мы имеем связать данные с именем Тото.
Мне нужно получить сумму Number1 и Number 2 (это самая простая часть) и объединить с данными в таблице. например:
ключ для редуктора будет tata и может быть получен путем получения rowkey toto в таблице hbase.
Любые предложения?
, пожалуйста, проверьте мой ответ, похоже, что это [аналогичная проблема] (http://stackoverflow.com/a/41759525/647053). переместить вещи, такие как htable и т. д. ... в закрытие будет исправлять в этом случае –
, насколько велико количество отображений, в основном количество ключей в Hbase для ваших данных? –
Спасибо за ваш ответ, я попробую этот Рам Гадиярам. В таблице могут быть миллионы ключей, и каждый ключ может иметь тысячи столбцов – okitas