如何修复在pyspark中对配置单元表执行操作时的大小限制错误

ycl3bljg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(480)

我有一个包含40亿行的配置单元表,需要加载到pyspark中。当我尝试执行任何操作(如对该表进行计数)时,会出现以下异常(后跟 TaskKilled 例外情况):

Py4JJavaError: An error occurred while calling o89.count.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 6732 in stage 13.0 failed
4 times, most recent failure: Lost task 6732.3 in stage 13.0 (TID 30759, some_server.XX.net, executor 38): org.apache.hive.com.google.protobuf.InvalidProtocolBufferException: Protocol mess
age was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() to increase the size limi
t.

我的hbase版本是1.1.2.2.6.1.0-129,目前无法升级。
有没有什么方法可以在不升级的情况下绕过这个问题,比如修改某个环境变量或配置,或者通过命令行将参数传递给pyspark?

t1qtbnec

t1qtbnec1#

我会说不。
基于以下jiras,增加protobuf大小似乎需要代码更改,因为所有这些jiras都是通过使用 CodedInputStream 正如例外情况所暗示的那样。
hdfs-6102降低每个目录的默认最大项目数以修复pb fsimage加载
由于64 mb协议的最大长度限制,hdfs-10312大数据块报告可能无法在namenode解码。
hbase-14076结果序列化和突变序列化可在序列化大于64mb的单元格时引发invalidprotocolbufferexception
hive-11592 orc元数据部分有时会超过protobuf消息大小限制
spark-19109 orc元数据部分有时会超过protobuf消息大小限制

相关问题