Java 测试sparksql本地查询

Java 测试sparksql本地查询,java,python,apache-spark,hbase,Java,Python,Apache Spark,Hbase,最近我在一个Spark应用程序中工作,作为项目的一部分,数据集从HBase服务器读取,Spark sql修改读取的数据并保存到Kafka 我面临的问题是无法在本地测试spark.sql。每次我都要提交应用程序jar并在服务器上运行。 在Sql中,我们有在本地环境中测试所有查询的工具 是否有一种方法或其他工具可以通过从HBase读取数据在本地测试spark sql 我尝试了hbaseExplorer,但它没有解决问题 谢谢,如果您正在谈论Spark SQL查询的单元测试。您始终可以在本地创建数据集

最近我在一个Spark应用程序中工作,作为项目的一部分,数据集从HBase服务器读取,Spark sql修改读取的数据并保存到Kafka

我面临的问题是无法在本地测试spark.sql。每次我都要提交应用程序jar并在服务器上运行。 在Sql中,我们有在本地环境中测试所有查询的工具

是否有一种方法或其他工具可以通过从HBase读取数据在本地测试spark sql

我尝试了hbaseExplorer,但它没有解决问题


谢谢,

如果您正在谈论Spark SQL查询的单元测试。您始终可以在本地创建数据集并对其运行查询

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|
 +---------+

如果您正在谈论单元测试您的Spark SQL查询。您始终可以在本地创建数据集并对其运行查询

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|
 +---------+
使用ApachePhoenix

如果您有权访问ApachePhoenix,请在本地打开SparkShell,并使用JDBC连接详细信息连接到ApachePhoenix

使用到HBase的直接连接 您还可以直接从本地spark shell连接HBase,如果您的群集是安全的或启用了kerbrose,则会有点困难

使用导出样本数据的简单方法&也将节省大量时间

为了测试目的

将样本数据从您的HBase导出为json或csv或您喜欢的任何其他格式 将这些数据下载到本地系统中。 使用spark shell创建与HBase表具有相同结构的表,方法是使用以下命令-spark.sql'create table HbaseTable 将下载的示例数据加载到DataFrame中 将数据帧数据写入新创建的表。 检查以下步骤以供参考

打开路径/tmp/spark中的火花壳

注意-从下一次开始,如果您想对您的hbase数据进行任何测试,您必须从创建表的同一目录/tmp/spark打开spark shell,如果您在不同目录中打开spark shell并访问HbaseTable表,它将不起作用。

使用Apache Phoenix

如果您有权访问ApachePhoenix,请在本地打开SparkShell,并使用JDBC连接详细信息连接到ApachePhoenix

使用到HBase的直接连接 您还可以直接从本地spark shell连接HBase,如果您的群集是安全的或启用了kerbrose,则会有点困难

使用导出样本数据的简单方法&也将节省大量时间

为了测试目的

将样本数据从您的HBase导出为json或csv或您喜欢的任何其他格式 将这些数据下载到本地系统中。 使用spark shell创建与HBase表具有相同结构的表,方法是使用以下命令-spark.sql'create table HbaseTable 将下载的示例数据加载到DataFrame中 将数据帧数据写入新创建的表。 检查以下步骤以供参考

打开路径/tmp/spark中的火花壳


注意-从下一次开始,如果您想对您的hbase数据进行任何测试,您必须从创建表的同一目录/tmp/spark打开spark shell,如果您在不同目录中打开spark shell并访问HbaseTable表,它将不起作用。

Hi Stephane,我必须写一个脚本或任何教程都会很有帮助吗?嗨,史蒂芬,非常感谢,将尝试更新..嗨,史蒂芬,我必须写一个脚本或任何教程都会很有帮助吗?嗨,史蒂芬,非常感谢,将尝试更新。。
/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

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