在实木复合地板文件中将二进制转换为字符串

时间:2019-07-18 10:55:45

标签: apache-spark parquet

我有一个分区,其中包含几个镶木文件,出于某种原因,所有字符串都保存为二进制,而其余分区上的字符串则存储为字符串类型。

我知道设置属性spark.sql.parquet.binaryAsString = true可以解决问题,但是有几个人使用此数据集,因此该信息需要传输给每个人,这可能很复杂。除此之外,出于一致性的原因,所有架构都应该相同。

我尝试使用属性spark.sql.parquet.binaryAsString = true读取该分区,当我打印架构时,我确认所有二进制文件都被解释为字符串。然后,我将该数据帧保存为镶木地板,但所有字符串均保存为二进制。

你们知道如何进行这种数据类型转换,为什么将属性spark.sql.parquet.binaryAsString设置为true时将字符串保存为二进制?

谢谢!

1 个答案:

答案 0 :(得分:0)

确定要正确阅读架构吗?在底层,实木复合地板采用诸如字符串之类的逻辑类型,并将它们映射为诸如二进制之类的原始类型。

https://parquet.apache.org/documentation/latest/

这些是官方支持的原始类型。

  • 布尔值:1位布尔值
  • INT32:32位带符号整数
  • INT64:64位带符号的整数
  • INT96:96位带符号整数
  • FLOAT:IEEE 32位浮点值
  • 双重:IEEE 64位浮点值
  • BYTE_ARRAY:任意长字节数组。