如何使用包含点/句点的列名创建火花数据框?
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 可以正常工作。请尝试回复
【讨论】:
以上是关于如何使用包含点/句点的列名创建火花数据框?的主要内容,如果未能解决你的问题,请参考以下文章