remarkzhao 发表于 2018-3-14 11:31:25

spark生成HFile bulkload到hbase 延伸二


各位大神,新问题来了。。

Caused by: java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.sql.execution.FilterExec.otherPreds of type scala.collection.Seq in instance of org.apache.spark.sql.execution.FilterExec
这个异常是在idea里 setMaster(“spark://master:7077“) 模式下发生

我的业务是这样:从关系型数据库读出数据集,对数据集的某些指定的字段,它们的值为空的的整条记录过滤掉,过滤完的数据集进行拼接,格式为

<ImmutableWritable,KeyValue>, ImmutableWritable就是我指定的某几个字段拼接起来的rowkey,而KeyValue,Key是rowkey,Value:列族+列名+列值

这样生成文件 然后进行ImmutableWritable的排序 排完序再生成HFile 然后saveAsNewHadoopFile最后bulkload到hbase

第二个问题发生在我把代码打成jar包上传到集群上用spark on yarn的形式出现的异常

Caused by: java.io.IOException: Added a key not lexically larger than previous.
Current cell = 0|000024379500|10_000024379500|10_00118486_020160126083616/f:AGE/1520991994837/Put/vlen=2/seqid=0,
      lastCell = 3|000529786000|10_000529786000|10_01988604_20161024151804/f:WARD_NAME/1520991994837/Put/vlen=3/seqid=0


上面两种情况在local模式下不会出现问题成功跑完流程 HFile载入HBase

langke93 发表于 2018-3-14 11:44:26

感觉都是环境的问题
第二个
Added a key not lexically larger than previous.

是因为hfile没有排序造成的。我们平常put的时候会自动排序。

remarkzhao 发表于 2018-3-14 11:51:43

langke93 发表于 2018-3-14 11:44
感觉都是环境的问题
第二个
Added a key not lexically larger than previous.


问题是不知道环境问题出在哪。。。put有写过,但是感觉速度慢啊。。如果排序有问题,为啥在local模式的没出现该异常。

remarkzhao 发表于 2018-3-14 11:54:29

langke93 发表于 2018-3-14 11:44
感觉都是环境的问题
第二个
Added a key not lexically larger than previous.


有没有可能scala版本跟spark版本冲突。。

langke93 发表于 2018-3-14 12:05:16

remarkzhao 发表于 2018-3-14 11:54
有没有可能scala版本跟spark版本冲突。。

应该不会的。不过最好本地,与集群环境保持一致

remarkzhao 发表于 2018-3-14 12:09:34

langke93 发表于 2018-3-14 12:05
应该不会的。不过最好本地,与集群环境保持一致

恩。这个没有不一样。愁人一下子不知道问题出在哪。本地没问题 集群有问题 照理说是环境问题。但是不知道怎么排查,出现的那个排序还是业务上的,而不是能直接让人感觉是环境哪里出错

nextuser 发表于 2018-3-14 13:45:42

remarkzhao 发表于 2018-3-14 12:09
恩。这个没有不一样。愁人一下子不知道问题出在哪。本地没问题 集群有问题 照理说是环境问题。但是不知 ...

应该不是太难。只要比较他们之间的区别就可以了。local模式,使用的数据,是否和其它模式数据是一样的。
local模式使用的各个版本,是否和集群一致。

remarkzhao 发表于 2018-3-14 13:46:46

nextuser 发表于 2018-3-14 13:45
应该不是太难。只要比较他们之间的区别就可以了。local模式,使用的数据,是否和其它模式数据是一样的。
...

数据一致,版本一致。

nextuser 发表于 2018-3-14 14:02:48

remarkzhao 发表于 2018-3-14 13:46
数据一致,版本一致。

那就是配置入手。比如内存等。使用yarn-client还是yarn-cluster。这里面也有区别

remarkzhao 发表于 2018-3-14 15:44:13

nextuser 发表于 2018-3-14 14:02
那就是配置入手。比如内存等。使用yarn-client还是yarn-cluster。这里面也有区别

问题就不明白了。。。为什么配置不对会出现业务逻辑上的错误。
页: [1] 2
查看完整版本: spark生成HFile bulkload到hbase 延伸二