spark常见问题积累

a)        内存溢出,通过set("spark.executor.memory", "8g")解决

b)        各种各样的NonSerializableException,通过set("spark.serializer","org.apache.spark.serializer.KryoSerializer")解决

c)        实现multipleOutput

Spark和Avro的结合并不好,没有类似avro-mapred的库。无法直接实现AvroMultipleOutput

通过自己写partitionBy,以及foreachPartion(writeAvro)解决

1.       如何添加HBase依赖。

这个经过在社区提问得到解决:

exportSPARK_CLASSPATH="/usr/lib/hbase/conf/:/usr/lib/hbase/hbase-common.jar:/usr/lib/hbase/hbase-client.jar:/usr/lib/hbase/hbase-protocol.jar:/usr/lib/hbase/lib/htrace-core.jar"

只需要添加hbase-common,hbase-client, hbase-protocol, htrace-core四个jar包,以及hbase/conf目录;

而不需要添加整个`hbase classpath`——这样会导致依赖冲突

 

2.       HBase conf, connection, table的重用问题

val HBASE_CONF = HBaseConfiguration.create

val CONNECTION =HConnectionManager.createConnection(HBASE_CONF)

val table =CONNECTION.getTable(SessionUtils.TABLE_NAME)

其中HBASE_CONF,CONNECTION可以重用,放在object中。table不是线程安全的,需要每个map单独创建。

最后采用mapPartition替代flatMap,每个partition只创建一个table。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值