Parquet文件的Spark导入将字符串转换为bytearray

时间:2015-09-02 04:09:22

标签: apache-spark parquet

我有一个未压缩的Parquet文件,其中包含“爬虫日志”类型的数据。

我通过PySpark将其导入Spark中

sq = SQLContext(sc) p = sq.read.parquet('/path/to/stored_as_parquet/table/in/hive') p.take(1).show()

这表示源数据中的字符串转换为

Row(host=bytearray(b'somehostname'), (checksum=bytearray(b'stuff'))...)

当我做p.dtypes时,我看到了

((host binary), (checksum binary) ....).

我该怎么做才能避免这种转换,或者我如何转换回我需要的

即。当我做p.dtypes我想看到

((host string), (checksum string) ....)

感谢。

3 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。添加

sqlContext.setConf("spark.sql.parquet.binaryAsString","true")

创建我的SqlContext后立即为我解决了。

答案 1 :(得分:0)

对于spark 2.0或更高版本

设置运行时选项

spark.conf.set("spark.sql.parquet.binaryAsString","true")

答案 2 :(得分:0)

对于使用 SparkSession 的人来说:

spark = SparkSession.builder.config('spark.sql.parquet.binaryAsString', 'true').getOrCreate().newSession()