我们创建了一个phoenix表,然后使用PhoenixStorageHandler创建了蜂巢外部表,如下所示:
create external table ext_employee(id int,name string) STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' TBLPROPERTIES ("phoenix.table.name" = "phx_employee","phoenix.zookeeper.quorum" = "master.com,slave1.com,slave2.com","phoenix.zookeeper.znode.parent" = "/hbase", "phoenix.zookeeper.client.port" = "2181","phoenix.rowkeys" = "id","phoenix.column.mapping" = "id:ID, name:NAME");
我们能够从蜂巢壳查询外部表并查看记录。 当我们尝试从spark shell查询相同的外部配置单元表时,它会打印表列,但不会打印记录。它只是打印如下:
+--------------+
|id|name
+------+----+---
我们在蜂巢中创建了一个表(不是外部表),并且能够从spark壳中获取记录。我们仅看到配置单元EXTERNAL表存在问题。
无法理解我们缺少什么。我们正在集群环境中尝试使用2个数据节点。
有人可以帮忙吗?
我们所做的事情:
我们通过添加所需的罐子来打开火花壳
./spark-shell --jars /usr/hdp/2.5.3.0-37/phoenix/phoenix-4.7.0.2.5.3.0-37-hive.jar /usr/hdp/2.5.3.0-37/phoenix/phoenix-4.7.0.2.5.3.0-37-client.jar /usr/hdp/2.5.3.0-37/phoenix/lib/phoenix-spark-4.7.0.2.5.3.0-37.jar /usr/hdp/2.5.3.0-37/phoenix/lib/phoenix-core-4.7.0.2.5.3.0-37.jar /usr/hdp/2.5.3.0-37/phoenix/lib/phoenix-hive-4.7.0.2.5.3.0-37.jar /usr/hdp/2.5.3.0-37/phoenix/phoenix-4.7.0.2.5.3.0-37-server.jar --files /usr/hdp/2.5.3.0-37/hive/conf/hive-site.xml
上面提到的所有与phoenix相关的jar都添加到了hive / lib目录中