我发现是由的制造商之一发表的
hbase-spark,这似乎暗示着有一种方法可以使用Spark
SQL使用PySpark查询Hbase。
实际上,可以将此处描述的模式应用于使用PySpark使用SparkSQL查询Hbase,如以下示例所示:
from pyspark import SparkContextfrom pyspark.sql import SQLContextsc = SparkContext()sqlc = SQLContext(sc)data_source_format = 'org.apache.hadoop.hbase.spark'df = sc.parallelize([('a', '1.0'), ('b', '2.0')]).toDF(schema=['col0', 'col1'])# ''.join(string.split()) in order to write a multi-line JSON string here.catalog = ''.join("""{ "table":{"namespace":"default", "name":"testtable"}, "rowkey":"key", "columns":{ "col0":{"cf":"rowkey", "col":"key", "type":"string"}, "col1":{"cf":"cf", "col":"col1", "type":"string"} }}""".split())# Writingdf.write.options(catalog=catalog) # alternatively: .option('catalog', catalog).format(data_source_format).save()# Readingdf = sqlc.read.options(catalog=catalog).format(data_source_format).load()我已经尝试过
hbase-spark-1.2.0-cdh5.7.0.jar(由Cloudera分发),但是遇到了麻烦(
org.apache.hadoop.hbase.spark.DefaultSourcedoes not allow create table as select写
java.util.NoSuchElementException:None.get时,读时)。事实证明,当前版本的CDH不包括
hbase-spark允许Spark SQL-Hbase集成的更改。
什么 做
的工作对我来说是
shc星火包,发现在这里。我必须对以上脚本进行的唯一更改是更改:
data_source_format = 'org.apache.spark.sql.execution.datasources.hbase'
按照
shc自述文件中的示例,这是我在CDH群集上提交上述脚本的方式:
spark-submit --packages com.hortonworks:shc:1.0.0-1.6-s_2.10 --repositories http://repo.hortonworks.com/content/groups/public/ --files /opt/cloudera/parcels/CDH/lib/hbase/conf/hbase-site.xml example.py
大部分工作
shc似乎已经合并到
hbase-sparkHbase模块中,以在2.0版中发布。这样,可以使用上述模式对Hbase进行Spark
SQL查询(有关详细信息,请参见:https:
//hbase.apache.org/book.html#_sparksql_dataframes)。上面的示例显示了PySpark用户的外观。
最后,请注意:我上面的示例数据仅包含字符串。不支持Python数据转换
shc,因此我遇到了整数和浮点数未在Hbase中显示或出现奇怪值的问题。



