我有一个包含400多列的拼花文件,当我读到它时,附加到很多列的默认数据类型是String(可能是由于其他人指定的模式)。
我无法找到类似于
的参数SaaS
我尝试过更改
inferSchema=True' #for spark.read.parquet, present for spark.read.csv
要手动将列转换为float,我使用
mergeSchema=True #but it doesn't improve the results
运行时没有错误,但将所有实际的字符串列值转换为Null。我不能在try,catch块中包装它,因为它不会抛出任何错误。
有没有办法可以检查列是否只包含'整数/浮点数'值并选择性地将这些列转换为float?
答案 0 :(得分:1)
Parquet列是类型化的,因此在加载Parquet文件时不存在模式推断。
有没有办法可以检查列是否只包含'整数/浮点数'值并选择性地将这些列转换为float?
您可以使用与Spark相同的逻辑 - 定义首选类型层次结构并尝试强制转换,直到找到最具选择性类型的点,即解析列中的所有值。
答案 1 :(得分:0)
目前还不容易, 已经存在的Github问题可以参考
https://github.com/databricks/spark-csv/issues/264
这样的东西现存为scala,可以为pyspark创建