簡體   English   中英

SparkSQL - 直接讀取鑲木地板文件

[英]SparkSQL - Read parquet file directly

我正在從 Impala 遷移到 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)

使用簡單的 SQL

無需在 Spark DataFrame 上創建表即可查詢 JSON、ORC、Parquet 和 CSV 文件。

//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()

假設您在 HDFS 中有 parquet 文件ventas4

hdfs://localhost:9000/sistgestion/sql/ventas4

在這種情況下,步驟是:

  1. 為 SQL 上下文充電:

     val sqlContext = new org.apache.spark.sql.SQLContext(sc)
  2. 閱讀鑲木地板文件:

     val ventas=sqlContext.read.parquet("hdfs://localhost:9000/sistgestion/sql/ventas4")
  3. 注冊一個時態表:

     ventas.registerTempTable("ventas")
  4. 執行查詢(在這一行中,您可以使用 toJSON 傳遞 JSON 格式,也可以使用 collect()):

     sqlContext.sql("select * from ventas").toJSON.foreach(println(_)) sqlContext.sql("select * from ventas").collect().foreach(println(_))

在intellij中使用以下代碼:

def groupPlaylistIds(): Unit ={
    Logger.getLogger("org").setLevel(Level.ERROR)

    val spark = SparkSession.builder.appName("FollowCount")
      .master("local[*]")
      .getOrCreate()

    val sc = spark.sqlContext

    val d = sc.read.format("parquet").load("/Users/CCC/Downloads/pq/file1.parquet")
    d.printSchema()

    val d1 = d.select("col1").filter(x => x!='-')
    val d2 = d1.filter(col("col1").startsWith("searchcriteria"));
    d2.groupBy("col1").count().sort(col("count").desc).show(100, false)
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM