我正在尝试将seg-Y类型文件加载到spark中,并将它们传输到rdd以进行mapreduce操作。 但我未能将它们转移到rdd。有谁可以提供帮助吗?
答案 0 :(得分:2)
您可以使用binaryRecords()pySpark调用将二进制文件的内容转换为RDD
http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.SparkContext.binaryRecords
binaryRecords(path,recordLength)
从a加载数据 平面二进制文件,假设每条记录都是一组数字 指定的数字格式(参见ByteBuffer)和字节数 每条记录都是不变的。
参数:path - 输入数据文件recordLength的目录 - 分割记录的长度
然后你可以使用例如struct.unpack()
将RDD映射到一个结构中。https://docs.python.org/2/library/struct.html
我们使用这种方法来摄取固定宽度记录的二进制文件。有一些Python代码生成格式字符串(struct.unpack
的第一个参数),但是如果你的文件布局是静态的,那么一次手动操作相当简单。
同样可以使用纯Scala:
答案 1 :(得分:0)
你没有给出太多细节,但你可以从使用SparkContextbinaryFiles()API开始
http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.SparkContext