【问题标题】:How to read csv with schema in pyspark如何在 pyspark 中使用模式读取 csv
【发布时间】:2020-01-26 22:03:44
【问题描述】:

我知道如何使用 pyspark 读取 csv,但在以正确格式加载它时遇到了很多问题。我的 csv 有 3 列,其中第一列和第二列是字符串,但第三列是字典列表。我无法加载最后一列。

我试过了

schema = StructType([
    StructField("_id", StringType()),
    StructField("text", StringType()),
    StructField("links", ArrayType(elementType=MapType(StringType(), StringType())))
])

但它引发了一个错误。使用 Inferschema 都不起作用。

【问题讨论】:

    标签: csv pyspark pyspark-dataframes


    【解决方案1】:

    您需要拥有inferSchema="true"。如果它导致问题,将所有内容都读取为字符串,然后您可以使用来自ast 包的ast.literal_eval()str 转换为dict

    你使用这个函数:

    def read_csv_spark(spark, file_path):
    
        """
        :param spark: SparkSession or SQLContext
        :param file_path: Path to the file
        :return: Spark Dataframe
        """
        df = (
            spark.read.format("com.databricks.spark.csv")
            .options(header="true", inferSchema="true")
            .load(file_path)
        )
        return df
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2020-04-30
      • 2021-05-22
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      相关资源
      最近更新 更多