我正在尝试从csv保存新表。不幸的是,读取和保存csv的方式,所有列类型都是字符串。数据集包含其他类型,我想在创建表时指定类型。
我已经找到了一个在创建表后更改列类型的解决方案,但它似乎并不实用。
这就是我创建表的方式:
from pyspark.sql import DataFrame
import_path = f"{st_raw}/data.csv"
sparkDF = spark.read.csv(import_path, header=True)
spark.sql(f"CREATE SCHEMA IF NOT EXISTS {catalog}.{schema}")
tablename = f"{catalog}.{schema}.{table}"
sparkDF.write.saveAsTable(tablename)
assert spark.table(tablename).count() > 0
display(spark.table(tablename))
打印模式显示,所有列都是字符串类型:
|-- Date: string (nullable = true)
|-- Location: string (nullable = true)
|-- Country: string (nullable = true)
|-- Temperature: string (nullable = true)
|-- CO2 Emissions: string (nullable = true)
|-- Sea Level Rise: string (nullable = true)
|-- Precipitation: string (nullable = true)
|-- Humidity: string (nullable = true)
|-- Wind Speed: string (nullable = true)
我需要指定正确的类型。我怎么能做到呢?
2条答案
按热度按时间p4tfgftt1#
通常在阅读csv时,可以使用
inferSchema
选项来推断列的类型。正如here所解释的,它被defaut设置为false。所以你的初始数据框应该看起来像这样:g6baxovj2#
在阅读CSV时,可以使用schema函数指定模式。这个链接有一个完整的例子。