我正在加载一个文本文件,它以TSV(tablar separated value)符号表示,但每行中没有键。因此,一行表示一个特定的变量,下面所有的行都是该变量的值,直到出现新的变量为止。在
因此,我使用自定义分隔符加载文件(在Jupyter笔记本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是一次在一台机器上加载文件,还是将块分割成更小的块(块),然后再进行处理?在
只想确保处理节点上的内存不会爆炸。谢谢你的解释。在
o.a.h.mapreduce.lib.input.TextInputFormat
返回的每个(key,value)对都是一个包含偏移量(long
)和字符串的单个本地数据结构。没有一种机制可以在不创建自定义Hadoop ^{“千言万语”不是很精确的描述,但作为经验法则:
还要记住,大记录可能导致资源利用率不理想。在最坏的情况下,每个任务可能只有一条记录,而记账成本可能远高于实际执行的成本。在
相关问题 更多 >
编程相关推荐