【问题标题】:Failing to put data into desired Schema in pyspark无法将数据放入 pyspark 中的所需架构
【发布时间】:2021-06-07 11:54:54
【问题描述】:

我有如下所示的 pyspark 数据框

>>> df.show(1, False)                                                           
{"data":{"probability":0.2345,"customerId":1234567,"region":"BR"},"uploadedDate":1542548806295} 

当我不传递任何模式作为输入时,以上是输出...

我正在尝试使用以下脚本加载带有提到的架构的数据。

SCHEMA = StructType([ StructField('probabilityMale',LongType(),True),\
                    StructField('customerId',LongType(),True),\
                    StructField('region',StringType(),True),\
                    StructField('uploadedDate',StringType(),True)])

df = spark.read.format('csv').\
     option('header','false').\
     option('delimiter','\t').\
     schema(SCHEMA).\
     load(path)

但这并没有在单独的列中提供所有数据点。我也试过inferSchema

df = spark.read.format('csv').\
     option('header','false').\
     option('delimiter','\t').\
     option("inferSchema", "true").\
     load(path)

但是得到与前面提到的相同的输出......

如何提及架构并在每列中有数据?

【问题讨论】:

    标签: json apache-spark pyspark


    【解决方案1】:

    您有一个 JSON 输入,您应该使用 JSON 阅读器而不是 CSV 阅读器来阅读:

    df = spark.read.json(path)
    

    要单独获取列,可以展开结构体data

    df2 = df.select('data.*', 'uploadedDate')
    

    【讨论】:

      猜你喜欢
      • 2022-11-07
      • 2017-11-03
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多