spark中的新手,並且在數據幀上有關於map
函數的問題。我有一個火花SQL數據框,名爲df
,假設它是這樣的:通過pyspark中的map函數統計sql中的數據幀的數量
temp = sqlContext.sql("SELECT * FROM df WHERE tag = 'A00000000001'")
temp.show(1)
則有:
+----------+------------+------+
| time| tag| value|
+----------+------------+------+
|1399766400|A00000000001|1000.0|
|1399766401|A00000000002|1001.0|
+----------+------------+------+
我可以基於與命令中的變量值選擇其中的一部分
+----------+------------+------+
| time| tag| value|
+----------+------------+------+
|1399766400|A00000000001|1000.0|
+----------+------------+------+
目前,我有一個列表
x = ["SELECT * FROM df WHERE tag = 'A00000000001'", "SELECT * FROM df WHERE tag = 'A00000000002'"]
已被存儲爲RDD變量,我想申請就可以了map
函數來計算選擇的依據他們數據框的次數,我試過的功能等:
y = x.map(lambda x: sqlContext.sql(x).count())
y.take(2)
我假定返回值應該是[1, 1]
,但它給人的錯誤:
TypeError: 'JavaPackage' object is not callable
是否有可能與此方法的數據幀執行地圖功能?如果不是,我該怎麼做。
所以,如果在RDD變量列表,然後我要首先收集? 「收集」需要很長時間。 –
除非您的RDD受到「少量」元素的約束,否則建議避免收集,因爲它會將所有數據都掌握在掌握之中,並且可能會「給它」帶來OME。我肯定會考慮@ zero323答案作爲一個更清潔的解決方案。 – eliasah