[英]Test Spark Sql Queries Local
最近我在一個 Spark 應用程序中工作,作為項目的一部分,從 HBase 服務器讀取數據集,Spark sql 修改讀取的數據並保存到 Kafka。
我面臨的問題是我無法在本地測試 spark.sql。 每次我必須提交應用程序jar並在服務器中運行。 在 Sql 中,我們有工具來測試本地環境中的所有查詢。
有沒有辦法或其他工具可以通過從 HBase 讀取數據來在本地測試 spark sql?
我試過 hbaseExplorer 但它沒有解決問題。
謝謝,
如果您正在談論對 Spark SQL 查詢進行單元測試。 您始終可以在本地創建 DataSet 並針對它們運行查詢
scala> val df = List(( 1 , false , 1.0 ),
| (2 , true , 2.0 )
| ).toDF("col1", "col2","col3" )
df: org.apache.spark.sql.DataFrame = [col1: int, col2: boolean ... 1 more field]
scala> df.registerTempTable("myTable")
scala> sql("select sum(col3) from myTable").show
+---------+
|sum(col3)|
+---------+
| 3.0|
+---------+
使用Apache Phoenix
如果您有權訪問Apache Phoenix
,請在本地打開 spark-shell 並使用 JDBC 連接詳細信息連接到Apache Phoenix
。
使用Direct Connection to HBase
您也可以直接從本地spark-shell
連接HBase
,如果您的集群是安全的或啟用了 kerbrose,這有點困難。
使用Export Sample Data
(簡單的方法,也會節省大量時間。)
出於測試目的,
json
或csv
或您喜歡的任何其他格式spark.sql('CREATE TABLE HbaseTable ..')
DataFrame
DataFrame
數據寫入新創建的表。檢查以下步驟供您參考。
/tmp/spark > ls -ltr
total 0
drwxr-xr-x 14 srinivas wheel 448 Nov 20 02:45 data
/tmp/spark > ls -ltr data
total 40
-rw-r--r-- 1 srinivas wheel 9 Nov 20 02:45 part-00000-4f5f5245-f664-426b-8204-a981871a1205-c000.json
-rw-r--r-- 1 srinivas wheel 9 Nov 20 02:45 part-00004-4f5f5245-f664-426b-8204-a981871a1205-c000.json
-rw-r--r-- 1 srinivas wheel 9 Nov 20 02:45 part-00002-4f5f5245-f664-426b-8204-a981871a1205-c000.json
-rw-r--r-- 1 srinivas wheel 9 Nov 20 02:45 part-00003-4f5f5245-f664-426b-8204-a981871a1205-c000.json
-rw-r--r-- 1 srinivas wheel 9 Nov 20 02:45 part-00001-4f5f5245-f664-426b-8204-a981871a1205-c000.json
在路徑/tmp/spark
打開spark-shell
/tmp/spark > spark-shell
scala> val df = spark.read.json("/tmp/spark/data")
df: org.apache.spark.sql.DataFrame = [id: bigint]
scala> spark.sql("create table HBaseTable(id int) stored as orc")
res0: org.apache.spark.sql.DataFrame = []
scala> df.write.insertInto("HbaseTable")
scala> spark.sql("select * from HbaseTable").show(false)
+---+
|id |
+---+
|4 |
|3 |
|1 |
|5 |
|2 |
+---+
scala> :q
/tmp/spark > ls -ltr
total 8
drwxr-xr-x 14 srinivas wheel 448 Nov 20 02:45 data
-rw-r--r-- 1 srinivas wheel 700 Nov 20 02:45 derby.log
drwxr-xr-x 9 srinivas wheel 288 Nov 20 02:45 metastore_db
drwxr-xr-x 3 srinivas wheel 96 Nov 20 02:46 spark-warehouse
/tmp/spark > ls -ltr spark-warehouse
total 0
drwxr-xr-x 12 srinivas wheel 384 Nov 20 02:46 hbasetable
/tmp/spark > ls -ltr spark-warehouse/hbasetable
total 40
-rwxr-xr-x 1 srinivas wheel 196 Nov 20 02:46 part-00002-5a3504cd-71c1-46fa-833f-76bf9178e46f-c000
-rwxr-xr-x 1 srinivas wheel 196 Nov 20 02:46 part-00001-5a3504cd-71c1-46fa-833f-76bf9178e46f-c000
-rwxr-xr-x 1 srinivas wheel 196 Nov 20 02:46 part-00003-5a3504cd-71c1-46fa-833f-76bf9178e46f-c000
-rwxr-xr-x 1 srinivas wheel 196 Nov 20 02:46 part-00000-5a3504cd-71c1-46fa-833f-76bf9178e46f-c000
-rwxr-xr-x 1 srinivas wheel 196 Nov 20 02:46 part-00004-5a3504cd-71c1-46fa-833f-76bf9178e46f-c000
注意- 從下一次開始,如果您想對您的 hbase 數據進行任何測試,您必須從/tmp/spark
與您創建table
同一目錄中打開您的 spark-shell,如果您在不同的位置打開 spark-shell,它將無法正常工作目錄並訪問HbaseTable
表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.