gpt4 book ai didi

python - PySpark (Python) : loading multiline records via SparkContext. newAPIHadoopFile

转载 作者:可可西里 更新时间:2023-11-01 14:48:46 26 4
gpt4 key购买 nike

我正在加载一个文本文件,该文件采用 TSV(表格分隔值)表示法,但每行中都没有键。因此,一行表示一个特定变量,随后的所有行都是该变量的值,直到出现新变量。

因此我使用自定义分隔符加载文件(在 Jupyter Notebook Python 2.7 - Pyspark 中):

sheet = sc.newAPIHadoopFile(
'sample.txt',
'org.apache.hadoop.mapreduce.lib.input.TextInputFormat',
'org.apache.hadoop.io.LongWritable',
'org.apache.hadoop.io.Text',
conf={'textinputformat.record.delimiter': 'var::'}
)

我的问题是,这样的多行记录的大小如何?一个变量的值可能有数千行。 Spark 是在一台机器上立即加载文件,还是将该 block 拆分为较小的 block ( block ),然后进行处理?

只是想确保内存没有在处理节点上爆炸。感谢您的任何解释。

reading multiline records

最佳答案

o.a.h.mapreduce.lib.input.TextInputFormat 返回的每个(键,值)对都是一个包含偏移量(long)和字符串的本地数据结构。没有可以在不创建自定义 Hadoop 的情况下在多个记录之间拆分值的机制 InputFormat .

“几千行”不是很精确的描述,但作为一个经验法则:

  • 如果磁盘上的大小小于几兆字节,您很可能可以继续使用。
  • 否则,您将不得不跟踪内存使用情况和 GC 并调整配置。

另请记住,大型记录可能导致资源利用率不理想。在最坏的情况下,您最终可能每个任务只有一条记录,而簿记成本可能比实际执行成本高得多。

关于python - PySpark (Python) : loading multiline records via SparkContext. newAPIHadoopFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com