2016-04-28 25 views
1

パンダのデータフレームをハイブテーブルに送るにはどうすればいいですか?pysparkのデータフレームをハイブにする

私はスパークデータフレームを持っている場合、私は

df.registerTempTable("table_name") 
sqlContext.sql("create table table_name2 as select * from table_name") 

を使用して一時テーブルにそれを登録することができます知っているが、私はregisterTempTableにパンダのデータフレームを使用しようとすると、私は以下のエラーを取得:

AttributeError: 'DataFrame' object has no attribute 'registerTempTable' 

私はパンダのデータフレームを使ってテンポラリテーブルを登録したり、それをsparkのdataFrameに変換してから、それをハイブに戻すことができるようにテンポラリテーブルを登録する方法がありますか?

+0

に変換する必要があり、エラーがクリアされている属性は、パンダのデータフレーム – EdChum

+0

はいのために存在していませんが、私はスパークデータフレームにパンダのデータフレームに変換する方法はありませんありません。 'sqlContext.createDataFrame(df)' を使ってみましたが、dataFrame内のデータではなくスキーマのみを取ります。 – nakulchawla09

答えて

1

Spark's DFの代わりにパンダdfを使用しようとしているようです。

パンダのデータフレームには、registerTempTableというような方法はありません。

pandas DFからSpark DFを作成しようとする場合があります。

UPDATE:(パンダモジュールを含む、Anaconda parcelインストールされている)私はClouderaの下でそれをテストしてみた

(通常で:spark-conf/spark-env.sh)すべてのスパークの労働者に、あなたのアナコンダのPythonのインストール(またはパンダモジュールを含む別の1)にPYSPARK_PYTHONが設定されていることを確認してくださいここで

は私のテストの結果である:

>>> import pandas as pd 
>>> import numpy as np 
>>> df = pd.DataFrame(np.random.randint(0,100,size=(10, 3)), columns=list('ABC')) 
>>> sdf = sqlContext.createDataFrame(df) 
>>> sdf.show() 
+---+---+---+ 
| A| B| C| 
+---+---+---+ 
| 98| 33| 75| 
| 91| 57| 80| 
| 20| 87| 85| 
| 20| 61| 37| 
| 96| 64| 60| 
| 79| 45| 82| 
| 82| 16| 22| 
| 77| 34| 65| 
| 74| 18| 17| 
| 71| 57| 60| 
+---+---+---+ 

>>> sdf.printSchema() 
root 
|-- A: long (nullable = true) 
|-- B: long (nullable = true) 
|-- C: long (nullable = true) 
+0

パンダをDFの火花に変換する方法はありませんか?私はspark dfのすべての私の機能を書こうとすることができますが、それは柔軟にパンダとして動作しません。 – nakulchawla09

+0

はい、それはスキーマを作成するだけですが、データは持ちません。 一度試してみてください。 – nakulchawla09

+0

または、一時表を使用せずにデータをハイブに戻す別の方法が分かっている場合は、それを共有してください。私はハイブでデータを取得している間は、テンポラリテーブルを持つことに熱心ではありません。 – nakulchawla09

0

私は、データフレームを刺激するためにパンダのデータフレームの変換)

1で一時テーブルに私のパンダのDFを変換:

spark_df=sqlContext.createDataFrame(Pandas_df) 

2)データは)が適切に

spark_df.select("*").show() 
を移行照会するための一時テーブルにスパークデータフレームに変換していることを確認してください。

spark_df.registerTempTable("table_name"). 

乾杯..

関連する問題