一個PySpark Dataframe
是以下格式:如何選擇所有列而不是每個硬編碼?
要剛剛訪問stddev
行的列C1,C2,C3我使用的:
df.describe().createOrReplaceTempView("table1")
df2 = sqlContext.sql("SELECT c1 AS f1, c2 as f2, c3 as f3 from table1")
ddd = df2.rdd.map(lambda x : (float(x.f1) , float(x.f2) , float(x.f3))).zipWithIndex().filter(lambda x: x[1] == 2).map(lambda x : x[0])
print type(ddd)
print type(ddd.collect())
print ddd.collect()
此打印:
<class 'pyspark.rdd.PipelinedRDD'>
<type 'list'>
[(0.7071067811865476, 0.7071067811865476, 0.7071067811865476)]
如何爲所有列選擇stddev
值:c1,c2,c3,c 4,c5併爲這些選擇生成數據類型[(0.7071067811865476, 0.7071067811865476, 0.7071067811865476....
,而不是將每個值硬編碼到SQL字符串中?所以列數可以是可變的:5,10列等...
要完成這5列,我認爲使用"SELECT c1 AS f1, c2 as f2, c3 as f3, c4 as f4, c5 as f5 from table1"
,但是有一個更清潔的方法,而不是硬編碼SQL中的每個值,然後相應硬編碼生成rdd時的值:df2.rdd.map(lambda x : (float(x.f1) , float(x.f2).....
由於我的解決方案不適用於長度不同的列。