如何使用包含点/句点的列名创建火花数据框?

Posted

技术标签:

【中文标题】如何使用包含点/句点的列名创建火花数据框?【英文标题】: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)结构。我不确定是否有可能的出路。 在定义模式时,您不必在字段名称中使用 ` 字符。使用列名时需要该字符。只需在架构定义中删除该字符,您就可以开始了。 【参考方案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 可以正常工作。请尝试回复

【讨论】:

以上是关于如何使用包含点/句点的列名创建火花数据框?的主要内容,如果未能解决你的问题,请参考以下文章

从自定义数据格式创建火花数据框

如何从火花数据框中提取 csv 名称

根据 R 中的列名创建一个新数据框,其中包含来自另一个数据框的列

读入火花数据框时如何从csv文件中删除列

如何在火花中合并两个不同的数据帧? [复制]

如何查询列名中带有句点的 Excel 工作表