2017-06-07 230 views
0

pyspark數據框列名的限制是什麼。我有問題,與下面的代碼..pyspark數據框列名

%livy.pyspark 
df_context_spark.agg({'spatialElementLabel.value': 'count'}) 

它給...

u'Cannot resolve column name "spatialElementLabel.value" among (lightFixtureID.value, spatialElementLabel.value);' 

列名顯然是輸入正確。我通過熊貓數據框的轉換獲得了數據框。在列名字符串中有點問題嗎?

回答

1

點用於結構類型中的嵌套字段。所以,如果你有一個是被稱爲類型StructType的「地址」欄,裏面,你有street1,STREET2,等你訪問它的各個字段是這樣的:

df.select("address.street1", "address.street2", ..) 

正因爲如此,如果你想要在字段名稱中使用點,只要引用該字段,就需要引用該字段。例如:

from pyspark.sql.types import * 

schema = StructType([StructField("my.field", StringType())]) 

rdd = sc.parallelize([('hello',), ('world',)]) 
df = sqlContext.createDataFrame(rdd, schema) 

# Using backticks to quote the field name 
df.select("`my.field`").show() 
+0

非常感謝!最後,我決定重命名列,並刪除列名中的點。我可以用反引號確認你的建議。 –