【Spark實戰】Spark操作HBase問題:java.io.IOException: Non-increasing Bloom keys
1 問題描述
在使用Spark BulkLoad資料到HBase時遇到以下問題:
17/05/19 14:47:26 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 12.0 (TID 79, bydslave5, executor 3): java.io.IOException: Non-increasing Bloom keys: 80a01055HAXMTXG10100001KEY_VOLTAGE_T_C_PWR after af401055HAXMTXG10100001KEY_VOLTAGE_TEC_PWR
at org.apache.hadoop.hbase.regionserver.StoreFile$Writer.appendGeneralBloomfilter(StoreFile.java:911)
at org.apache.hadoop.hbase.regionserver.StoreFile$Writer.append(StoreFile.java:947)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2$1.write(HFileOutputFormat2.java:199)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2$1.write(HFileOutputFormat2.java:152)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply$mcV$sp(PairRDDFunctions.scala:1125)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply(PairRDDFunctions.scala:1123)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12$$anonfun$apply$4.apply(PairRDDFunctions.scala:1123)
at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1341)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1131)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsNewAPIHadoopDataset$1$$anonfun$12.apply(PairRDDFunctions.scala:1102)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
at org.apache.spark.scheduler.Task.run(Task.scala:99)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
那麼是在什麼時候出現的呢?在執行完下面語句
val rdd = sc.textFile("/data/produce/2015/service.log.2017-04-24-08").map(_.split("@")).map{x => (DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1),x(2))}.map{x=>{val kv:KeyValue = new KeyValue(Bytes.toBytes(x._1),Bytes.toBytes("v"),Bytes.toBytes("value"),Bytes.toBytes(x._2+""));(new ImmutableBytesWritable(kv.getKey),kv)}}
rdd.saveAsNewAPIHadoopFile("/tmp/data1",classOf[ImmutableBytesWritable],classOf[KeyValue],classOf[HFileOutputFormat],job.getConfiguration())
從報錯資訊來看是因為key沒有按照遞增的順序進行排列,可能是BloomFilter對key的排序有要求,但是我們知道key的無序是因為spark在shuffle階段並沒有像MapReduce那樣強制排序,所以要解決這個問題我們需要手動地為資料進行排序,只需要對rdd執行sortBy即可。
2 問題解決
下面語句是增加排序的語句,經過測試執行通過
val rdd = sc.textFile("/data/produce/2015/service.log.2017-04-24-08").map(_.split("@")).map{x => (DigestUtils.md5Hex(x(0)+x(1)).substring(0,3)+x(0)+x(1),x(2))}.sortBy(x =>x._1).map{x=>{val kv:KeyValue = new KeyValue(Bytes.toBytes(x._1),Bytes.toBytes("v"),Bytes.toBytes("value"),Bytes.toBytes(x._2+""));(new ImmutableBytesWritable(kv.getKey),kv)}}
rdd.saveAsNewAPIHadoopFile("/tmp/data1",classOf[ImmutableBytesWritable],classOf[KeyValue],classOf[HFileOutputFormat],job.getConfiguration())
相關文章
- Hadoop與HBase中遇到的問題(續)java.io.IOException: Non-increasing Bloom keys異常HadoopJavaExceptionOOM
- spark與hbaseSpark
- Spark+Hbase 億級流量分析實戰( PV/UV )Spark
- HBase實操:HBase-Spark-Read-Demo 分享Spark
- Apache Spark技術實戰之6 -- spark-submit常見問題及其解決ApacheSparkMIT
- Spark —— Spark OOM Error問題排查定位SparkOOMError
- Spark+Hbase 億級流量分析實戰( 留存計算)Spark
- 【Spark篇】---Spark解決資料傾斜問題Spark
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- Spark+Hbase 億級流量分析實戰(日誌儲存設計)Spark
- spark讀取hbase的資料Spark
- Spark學習——問題排查Spark
- 關於MASTER=spark://SparkMaster:7077 ./spark-shell問題ASTSpark
- Spark綜合使用及使用者行為案例訪問session統計分析實戰-Spark商業應用實戰SparkSession
- Spark 如何寫入HBase/Redis/MySQL/KafkaSparkRedisMySqlKafka
- MapReduce和Spark讀取HBase快照表Spark
- Spark SQL知識點與實戰SparkSQL
- Spark面試題Spark面試題
- Spark開發-控制操作Spark
- Spark開發-transformations操作SparkORM
- Spark開發-Action操作Spark
- Spark Basic RDD 操作示例Spark
- 【scala】問題cannot resolve symbol sparkSymbolSpark
- 實戰|使用Spark Streaming寫入HudiSpark
- Spark SQL知識點大全與實戰SparkSQL
- Apache Spark技術實戰之3 -- Spark Cassandra Connector的安裝和使用ApacheSpark
- Spark機器學習實戰 (十一) - 文字情感分類專案實戰Spark機器學習
- Spark面試題(七)——Spark程式開發調優Spark面試題
- Spark面試題(八)——Spark的Shuffle配置調優Spark面試題
- Spark面試題(四)Spark面試題
- Spark Standalone模式 Master程式掛掉問題Spark模式AST
- Spark任務OOM問題如何解決?SparkOOM
- Spark操作開窗函式Spark函式
- Spark操作Hive分割槽表SparkHive
- Spark2 Dataset聚合操作Spark
- Spark Streaming調優引數及最佳實踐深入剖析-Spark商業調優實戰Spark
- Apache Spark技術實戰之4 -- 利用Spark將json檔案匯入CassandraApacheSparkJSON