【问题标题】:Syntax while setting schema for Pyspark.sql using StructType使用 StructType 为 Pyspark.sql 设置架构时的语法
【发布时间】:2015-07-24 17:08:30
【问题描述】:

我是 spark 新手,正在玩 Pyspark.sql。根据 pyspark.sql 文档here,可以像这样设置 Spark 数据帧和架构:

spark= SparkSession.builder.getOrCreate()
from pyspark.sql.types import StringType, IntegerType, 
StructType, StructField

rdd = sc.textFile('./some csv_to_play_around.csv'

schema = StructType([StructField('Name', StringType(), True),
                     StructField('DateTime', TimestampType(), True)
                     StructField('Age', IntegerType(), True)])

# create dataframe
df3 = sqlContext.createDataFrame(rdd, schema)

我的问题是,True 在上面的schema 列表中代表什么?我似乎无法在文档中找到它。提前致谢

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    表示列是否允许空值,true 表示可空值,false 表示不可空值

    StructField(name, dataType, nullable):表示一个StructType中的一个字段。字段的名称由名称指示。字段的数据类型由 dataType 指示。 nullable 用于指示该字段的值是否可以为空值。

    更多信息请参考Spark SQL and DataFrame Guide

    【讨论】:

    • 请注意,此“功能”已知不可靠且无法正常工作。使用前进行测试,如果我是你,我不会依赖它
    • 可能这是旧帖子,非常感谢@yhshen 的解决方案。我真的浪费了我 5-6 个小时来寻找问题。
    【解决方案2】:

    您也可以使用数据类型字符串:

    schema = 'Name STRING, DateTime TIMESTAMP, Age INTEGER'
    

    关于数据类型字符串的文档不多,但他们在docs 中提到了它们。它们比 StructTypes 更紧凑、更易读

    【讨论】:

      猜你喜欢
      • 2017-05-05
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 2011-07-02
      • 2015-08-11
      • 2017-09-22
      相关资源
      最近更新 更多