从 pyspark 中的 HDFS 读取 70gb bson 文件然后将其索引到 Elastic 时出错

Posted

技术标签:

【中文标题】从 pyspark 中的 HDFS 读取 70gb bson 文件然后将其索引到 Elastic 时出错【英文标题】:error while reading a 70gb bson file from HDFS in pyspark and then indexing it to Elastic 【发布时间】:2018-01-17 10:18:58 【问题描述】:

我正在尝试将 70gb bson 文件的数据读取为 spark 中的 rdd,然后在经过一些处理后将其索引为弹性。虽然代码对于部分数据(大约 20gb)运行良好,但当我获取整个数据时,出现以下错误:

ERROR BSONFileRecordReader: Error reading key/value from bson file on line 0: Expected size to be 1179749, not 5.
org.bson.BsonSerializationException: Expected size to be 1179749, not 5.

我什至在网上找不到类似的问题。我怎样才能摆脱它?

【问题讨论】:

【参考方案1】:

错误在于 bson 文件本身。我已将 70gb bson 文件从一台谷歌服务器传输到另一台,在此期间它已损坏。然后我转移了文件的 tar 形式,代码运行良好。为什么我想到以原始形式传输数据是因为 tar 和 untar 比简单地传输数据要慢。

【讨论】:

以上是关于从 pyspark 中的 HDFS 读取 70gb bson 文件然后将其索引到 Elastic 时出错的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 无法从 hdfs 读取 csv:HiveExternalCatalog 错误

使用 pyspark 从 hdfs 读取文件时连接被拒绝

Pyspark:获取HDFS路径上的文件/目录列表

pyspark 中 读取 hive 表,提示 hdfs 中的 nameservice 不识别

Pyspark:使用 configParser 读取 HDFS 上的属性文件

如何使用 pyspark 读取 hdfs kafka 数据?