1)如何克隆RDD對象到另一個對象?如何克隆RDD對象[Pyspark]
2)或讀取一個csv文件,我使用熊貓閱讀,然後使用sc.parallelize將列表轉換爲RDD對象。沒關係,或者我應該使用一些RDD方法直接從csv讀取?
3)我知道我需要將大量數據轉換爲RDD,但我是否也需要將單個int值轉換爲RDD?如果我只是聲明一個int變量,它會分佈在節點上嗎?
1)如何克隆RDD對象到另一個對象?如何克隆RDD對象[Pyspark]
2)或讀取一個csv文件,我使用熊貓閱讀,然後使用sc.parallelize將列表轉換爲RDD對象。沒關係,或者我應該使用一些RDD方法直接從csv讀取?
3)我知道我需要將大量數據轉換爲RDD,但我是否也需要將單個int值轉換爲RDD?如果我只是聲明一個int變量,它會分佈在節點上嗎?
可以使用火花CSV到REAS CSV文件火花
這裏是你的火花2.X如何閱讀
spark.read
.schema(my_schema)
.option("header", "true")
.csv("data.csv")
火花< 2.0
sqlContext
.read.format("com.databricks.spark.csv")
.option("header", "true")
.option(schema, my_schema)
.load("data.csv"))
對於根據您的要求更多選擇請參考here
您可以將RDD
或dataframe
分配給另一個變量進行克隆。
希望這會有所幫助。
是不是scala語法?我不認爲你回答了其他問題 –
如何克隆RDD?我正在使用rdd.distinct(),但它搞亂了值的索引 –
克隆是什麼意思?你爲什麼需要這樣做? –
我對你的問題有點困惑。 RDD是一個不可變的對象,因此您可以將數據加載到一個RDD中,然後可以根據您的初始RDD定義兩種不同的轉換。每次轉換都將使用原始的RDD並生成新的RDD。
事情是這樣的:
# load your CSV
loaded_csv_into_rdd = sc.textFile('data.csv').map(lambda x: x.split(','))
# You could even .cache or .persist the data
# Here two new RDDs will be created based on the data that you loaded
one_rdd = loaded_csv_into_rdd.<apply one transformation>
two_rdd = loaded_csv_into_rdd.<apply another transformation>
這是使用低級別的API,RDDS。如果您嘗試使用DataFrame API(數據集[Row]),可能會更好,因爲它可以推斷出架構,並且通常會更容易使用。
2)如果你想要使用RDDs,你要找什麼是sc.textFile,然後你用逗號分割來生成你可以管理的列表。
在3)中,在Spark中你不需要聲明變量。你正在使用函數式編程,所以狀態不是你需要保留的東西。你有累加器是一種特殊情況,但一般來說,你正在定義應用於整個數據集的函數,這被稱爲粗粒度變換。
爲什麼你需要熊貓?如果您的數據適合熊貓數據框,並且您可以將它放在單個機器的內存中,我不確定您是否需要Spark –
@ cricket_007我現在使用的數據是非常小的文件。我需要擴展我的模塊,因此使用火花。我是RDD的noob,所以不知道如何與他們合作。 –
如果您使用的是Spark2(帶有內置的csv閱讀器),那麼'Dataset'是適當的對象類 –