2017-02-28 151 views
0

我正在將批處理操作轉換爲Spark工作,目的是在AWS EMR中運行;這項工作的核心是兩個相當大的數據集之間的連接。火花數據幀是否分佈?

操作的核心是一個連接:

table_1: loaded from json file_1 
table_2: loaded from parquet file_2 
joined_table = table_1.join(table_2) 
    .map(some_data_transformations) 

store_it_off(joined_table) 

從谷歌的定義,一個數據幀是一表格結構,並放射性散佈分佈;不過,我已經看到其他說明dataFrames是基於Rdds實現的。數據框是分佈式的嗎?它們是否僅在採取了某些步驟並行化之後才進行分發?

+0

RDD API僅用於兼容性。你應該在數據集中使用Spark 2.x(如果使用最新的Spark) –

+0

「數據集API可以在Scala和Java中使用Python不支持數據集API,但是由於Python的動態特性,許多好處的數據集API已經可用了(也就是說,您可以通過自然的row.columnName名稱來訪問一個行的字段),R的情況類似。「 http://spark.apache.org/docs/latest/sql-programming-guide.html#datasets-and-dataframes。我正在使用pyspark – LizH

+0

我認爲Dataframe是分佈式的。它的名字是SchemaRDD,也是一種RDD。 – BobXWu

回答

-1

是的,Dataframe是默認分發的。但是對於某些場景,我們可能需要調用repartition來在節點之間分配數據。

+0

Atleast請提供downvote的原因。 –