我有一个包含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?
1条答案
按热度按时间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消息大小限制