【问题标题】:How to create spark dataframe with column name which contains dot/period?如何使用包含点/句点的列名创建火花数据框?
【发布时间】:2018-01-08 08:52:41
【问题描述】:

我在列表中有数据,并希望将其转换为 spark 数据框,其中一个列名包含“。”

我编写了以下代码,运行时没有任何错误。

input_data = [('retail', '2017-01-03T13:21:00', 134),
                     ('retail', '2017-01-03T13:21:00', 100)]
rdd_schema = StructType([StructField('business', StringType(), True), \
                         StructField('date', StringType(), True), \
                         StructField("`US.sales`", FloatType(), True)])
input_mock_df = spark.createDataFrame(input_mock_rdd_map, rdd_schema)

下面的代码返回列名

input_mock_df.columns

但是对这个数据框的任何操作都会给出错误,例如

input_mock_df.count()

如何制作包含“.”的有效 spark 数据帧?

注意

  • 我不给“。”在列名中,代码运行良好。
  • 我想使用原生 spark 解决它,而不是使用 pandas 等

【问题讨论】:

  • 也试过这个没有成功,好像点是为遍历结构保留的
  • 点表示(tableName.columnName)结构。我不确定是否有可能的出路。
  • 在定义模式时,您不必在字段名称中使用 ` 字符。使用列名时需要该字符。只需在架构定义中删除该字符,您就可以开始了。

标签: apache-spark pyspark apache-spark-sql spark-dataframe apache-spark-mllib


【解决方案1】:

我已经运行了下面的代码

input_data = [('retail', '2017-01-03T13:21:00', 134),
                 ('retail', '2017-01-03T13:21:00', 100)]
rdd_schema = StructType([StructField('business', StringType(), True), \
                     StructField('date', StringType(), True), \
                     StructField("US.sales", IntegerType(), True)])

input_mock_df = sqlContext.createDataFrame(input_data, rdd_schema)

input_mock_df.count()

返回计数为 2 可以正常工作。请尝试回复

【讨论】:

    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 2019-08-11
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多