スカラ座を使用してスパークにpriorly一時ビューを登録する必要なし(、SELECT
FROM
、WITH
とJOIN
Sの異なる種類を含む)SQL
文を実行する方法はあります?目標は、DataFrame
をSQLコードから迂回させることなく取得することです。スカラ&スパーク:登録tempviewせずにネイティブSQLのクエリー
によって提供されるどのように動作する(既存のDataFrame
を使用しtempview登録)例:
// df is an existing DataFrame
df.createOrReplaceTempView("people")
val sqlDF = spark.sql("SELECT * FROM people")
sqlDF.show()
DataFrame
既存の問題は、のために使用される基礎となるDataFrame
のもののみサブ量、ですtempviewを生成することができます。 SQLステートメントが多くの異なるテーブルまたはビューからのデータを使用する場合、これは非常に実用的ではありません。何かのように
// SQL is directly executed on database
val dfView = spark.sql(connectionProperties,
"SELECT *
FROM DATABASE_USER.V_VIEW_IN_DATABASE v1
JOIN DATABASE_USER.V_VIEW2_IN_DATABASE v2
ON v1.key = v2.key")
dfView.show()
自動タイプの推論で私の問題を解決するだろう。 this questionで指摘されている1つの可能性のあるパスを追いかけています。
セットアップ:Hadoopのv.2.7.3
、2.0.0
スパーク、インテリJのIDEA 2016.2
、Scalaの2.11.8
、Testcluster Win7のワークステーションは、Oracle 12cのデータベース上の
返信いただきありがとうございます! 'Seq((1.0,100.0)、(2.0,200.0))'をデータベースから直接データを照会するものに置き換えることはできません。 – Boern
ありがとう、私はそれを理解しています。私が理解できないことは、サンプルデータフレームコードを、データベース(例えば、jdbc)からデータを照会するSQLで置き換える方法です。 '' SELECT * FROM DATABASE_USER.V_VIEW_IN_DATABASE ''のようなものです。つまり、SQLから 'DataFrame'を作成するにはどうしたらいいですか? – Boern
私はpostgresdbからの読解を編集しました(あなたのsparkクラスパスにjdbcドライバを置き、適切な接続オプションを設定する必要があります)。 – Xavi