私はテーブルを読み取るために、次のコードを使用して、インパラからSparkSQLに移行しています:SparkSQL - 読むの寄木細工のファイルを直接
my_data = sqlContext.read.parquet('hdfs://my_hdfs_path/my_db.db/my_table')
それが何かを返すことができますので、私は、上記のSparkSQLを起動するにはどうすればよい:
を'select col_A, col_B from my_table'
私はテーブルを読み取るために、次のコードを使用して、インパラからSparkSQLに移行しています:SparkSQL - 読むの寄木細工のファイルを直接
my_data = sqlContext.read.parquet('hdfs://my_hdfs_path/my_db.db/my_table')
それが何かを返すことができますので、私は、上記のSparkSQLを起動するにはどうすればよい:
を'select col_A, col_B from my_table'
parquetファイルからDataframeを作成した後、それをsql queries
を実行する一時テーブルとして登録する必要があります。
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.parquet("src/main/resources/peopleTwo.parquet")
df.printSchema
// after registering as a table you will be able to run sql queries
df.registerTempTable("people")
sqlContext.sql("select * from people").collect.foreach(println)
我々はは、テーブルを作成することなく、直接JSON、ORC、寄木細工とCSVなどのファイルにをSQLを実行することができます。
//This Spark 2.x code you can do the same on sqlContext as well
val spark: SparkSession = SparkSession.builder.master("set_the_master").getOrCreate
spark.sql("select col_A, col_B from parquet.`hdfs://my_hdfs_path/my_db.db/my_table`")
.show()
このエラーが表示されます "ファイルが見つかりません。 SQLで「REFRESH TABLE tableName」コマンドを実行するか、または関連するデータセット/ DataFrameを再作成してください。これをどうやって解決するのですか? – Passionate
spark.sqlContext()を実行すると助けになりません。setConf( "spark.sql.parquet.cacheMetadata"、 "false"); – Passionate
作品! 'hdfs:// my_hdfs_path/my_db.db/my_table'をあなたのファイルパスに置き換えてください。 :) – Cherry
集める必要がありますか?いいですか?データが大きければ、ドライバにすべてを集めたくないからです。 – Edamame
SQLの使い方の例です。それはあなたがそれをどのように使いたいかによって異なります。あなたはクエリを変更するか、ドライバで必要なデータを取得するために.take()を実行することもできます –