2016-09-06 5 views
1

のサブセットを作成します。私はハイブから、このような電子メールアドレスのデータフレームを使用している場合はデータフレーム

email_address user_id 

[email protected] 2134 
null    2133 
[email protected] 2132 
[email protected] 21 
[email protected] 213 
[email protected] 21388 
null    22 
null    2134 

を私がnullの2つのデータフレーム(電子メールですべてのuser_idは年代を持つ1つのデータフレームを作成したいとnullではない電子メールですべてのUSER_IDさんを持っている他のデータフレーム)は、このような何か:

val sparkConf = new SparkConf().setAppName("YOUR_APP_NAME").setMaster("local[10]") 
val sc = new SparkContext(sparkConf) 
val sqlContext = new SQLContext(sc) 
val hiveContext = new HiveContext(sc) 

hiveContext.setConf("hive.metastore.uris", "METASTORE_URI_NAME_HERE") 

val df = hiveContext.sql("SELECT email,user_id FROM USERS") 

df.map{ row => 
    if row.getString(0).length > 0 { 
     //ADD INTO "First Dataframe" 
     //row.getString(0) = email, row.getString(1) = user_id 
    }else { 
     //ADD INTO "First Dataframe" 
     //row.getString(0) = email, row.getString(1) = user_id 
    } 
} 

First Dataframe:    Second Dataframe: 

[email protected] 2134   null    22 
[email protected] 2132   null    2134 
[email protected] 21   null    2133 
[email protected] 213 
[email protected] 21388 

私は以下のコードを持っています

全く新しいDataframeを作成する必要があるかどうか、あるいは最初にどのように行うかはわかりません。すべてのポインタ?

+0

は、nullではないメールアドレスのすべてをフィルタリングし、データフレームにそのRDDを変換RDDに 'df'変数を変換する一つの選択肢です。そして、元のrddからのnullであるすべての電子メールアドレスをフィルタリングし、そのrddをデータフレームに変換しますか?だから私は2つのデータフレームを持っています。 – CapturedTree

答えて

3

この場合、データフレーム機能isNull()を使用する方が簡単です。

df_no_nulls = df.where(col("email_address").isNull()) 

df_nulls = df.where(col("email_address").isNotNull()) 
関連する問題