Spark and Spark SQLの新機能です。createOrReplaceTempViewはSparkでどのように動作しますか?
どのようにcreateOrReplaceTempView
がSparkで動作しますか?
オブジェクトとしてRDD
をテーブルとして登録すると、すべてのデータがメモリに保存されます。
Spark and Spark SQLの新機能です。createOrReplaceTempViewはSparkでどのように動作しますか?
どのようにcreateOrReplaceTempView
がSparkで動作しますか?
オブジェクトとしてRDD
をテーブルとして登録すると、すべてのデータがメモリに保存されます。
createOrReplaceTempView
は、スパークSQLでハイブテーブルのように使用できる緩やかに評価された「ビュー」を作成します(またはそのビュー名が既に存在する場合は置き換えます)。ビューを支えるデータセットをキャッシュしない限り、ではなく、がメモリに保持されます。
scala> val s = Seq(1,2,3).toDF("num")
s: org.apache.spark.sql.DataFrame = [num: int]
scala> s.createOrReplaceTempView("nums")
scala> spark.table("nums")
res22: org.apache.spark.sql.DataFrame = [num: int]
scala> spark.table("nums").cache
res23: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [num: int]
scala> spark.table("nums").count
res24: Long = 3
データは、.count
コールの後で完全にキャッシュされます。 (永続的なテーブルとの比較)spark createOrReplaceTempView vs createGlobalTempView
関連する引用:
SO関連:ここではそれがキャッシュされています証拠だ「createOrReplaceTempViewコマンドとは異なり、saveAsTableは、データフレームの内容を具体ポインタを作成します。 Hiveメタストア内のデータに追加する必要があります。 https://spark.apache.org/docs/latest/sql-programming-guide.html#saving-to-persistent-tables
注から:createOrReplaceTempView
以前registerTempTable
たCreateOrReplaceTempViewが、それはこの時点でpresistantされていませんが、あなたはその上にSQLクエリを実行することができ、メモリ上のテーブルの一時的なビューを作成します。それを保存したい場合は、saveAsTableを使用して保存するか保存します。
まずCSV形式で
読み取りデータをCSV形式のデータを読み込み、データフレームに変換し、一時ビューを作成
val data = spark.read.format("csv").option("header","true").option("inferSchema","true").load("FileStore/tables/pzufk5ib1500654887654/campaign.csv")
スキーマを
印刷data.printSchema
data.createOrReplaceTempView("Data")
今、私たちが上にSQLクエリを実行することができ、我々はちょうど
%sql select Week as Date,Campaign Type,Engagements,Country from Data order by Date asc
を作成したテーブルビューが、これは 'view'一時テーブルを作成していますか?そして、 'view'はSparkのハイブテーブルのような特定の名前を持っていますか? –
はい、実際にはテーブルですが、ファイルにはマテリアライズされていないため、評価する必要があります。ハイブテーブル(生のSQLクエリなど)と同じように、ビューを使用することができます。 – Garren
従来の一時テーブルとは異なり、一時ビューはメモリにも全くマテリアライズされません。 SQLのデータにアクセスするのに便利ですが、アクセスされるたびにそのステートメントを評価する必要があることを理解しています – Garren