2017-06-10 13 views
1

空のテーブルがありますHiveこのテーブルにはレコードがありません。私が作成したこの空のテーブルを使用してPysparkからHDFSにファイルを保存します

data frame

df = sqlContext.table("testing.123_test") 

pysparkに私は列がidと呼ばれてい。この表では

df.registerTempTable('mytempTable') 

date=datetime.now().strftime('%Y-%m-%d %H:%M:%S') 

に一時テーブルとしてこのdata frameを登録しています。

from pyspark.sql import functions as f 

(sqlContext.table("myTempTable").select(f.concat_ws(",", f.first(f.lit(date)), f.min("id"), f.max("id"))).coalesce(1).write.format("text").mode("append").save("/tmp/fooo")) 

は今、私は

min_id = sqlContext.sql("select nvl(min(id),0) as minval from mytempTable").collect()[0].asDict()['minval'] 

max_id = sqlContext.sql("select nvl(max(id),0) as maxval from mytempTable").collect()[0].asDict()['maxval'] 

は、今私は、私は以下のように行っているHDFS

にファイルにdatemin_idmax_idを保存したいの下のような一時テーブルを照会したいです

HDFSでファイルをチェックすると、NULL値がすべて表示されます。

ファイル出力はHDFSです。

NULL,NULL,NULL 

私が欲しいのは

Date,0,0 

Here date is the current timestamp

どのように私は私が欲しいものを達成することができます。

+0

を与える必要があり、私はしないでくださいあなたがここで何をしようとしているのかを理解する。なぜ空のテーブルを読んだらHDFSに 'Date、0,0'と書くのですか?もう少し詳しく教えていただけますか? – philantrovert

+0

@philantrovertここでは、いくつかのテーブルのデータを 'HDFS'のディレクトリに保存しようとしています。テーブルにレコードがある場合はこれを行うことができますが、テーブルが空の場合は上記のシナリオに直面しています –

+0

面白いです。 https://stackoverflow.com/a/44315328/3415409 – eliasah

答えて

0

これはscalaですが、Pythonに簡単に複製できるはずです。 ここで必要な機能はna.fill機能です。そして、あなたは以下のコードではPythonの辞書とScalaの地図を交換する必要があります:これはあなたのDFは、次のようになります

scala> nullDF.show 
+----+----+----+ 
|date| x| y| 
+----+----+----+ 
|null|null|null| 
+----+----+----+ 

// You have already done this using Python's datetime functions 
val format = new java.text.SimpleDateFormat("dd/MM/YYYY HH:mm:ss") 
val curr_timestamp = format.format(new java.util.Date()) 

//Use na fill to replace null values 
//Column names as keys in map 
//And values are what you want to replace NULL with 

val df = nullDF.na.fill(scala.collection.immutable.Map(
     "date" ->) , 
     "x" -> "0" , 
     "y" -> "0")) 

これは、あなた

+-------------------+---+---+ 
|    date| x| y| 
+-------------------+---+---+ 
|10/06/2017 12:10:20| 0| 0| 
+-------------------+---+---+ 
関連する問題