我有个问题。我有Spark RDD
必须存储在hbase表中。我们使用apachephoenix层与数据库进行对话。表中有一列定义为 UNSIGNED_SMALLINT ARRAY
:
CREATE TABLE EXAMPLE (..., Col10 UNSIGNED_SMALLINT ARRAY, ...);
正如Phoenix城的文件所说,你可以在这里, ARRAY
数据类型由 java.sql.Array
.
我用PhoenixSpark插件来保存 RDD
在table里面。问题是我不知道如何创建 java.sql.Array
,没有任何 Connection
对象。代码摘录如下(代码采用scala语言):
// Map RDD into an RDD of sequences or tuples
rdd.map {
value =>
(/* ... */
value.getArray(), // Array of Int to convert into an java.sql.Array
/* ... */
)
}.saveToPhoenix("EXAMPLE", Seq(/* ... */, "Col10", /* ... */), conf, zkUrl)
哪种方式正确?有没有办法满足我的需求?
1条答案
按热度按时间ff29svar1#
Phoenix城的人已经通过电子邮件回答了上述问题。我报告的答案是留给未来的人智慧。
为了保存数组,可以使用普通的scala数组类型。例如,您可以查看测试:https://github.com/apache/phoenix/blob/master/phoenix-spark/src/it/scala/org/apache/phoenix/spark/phoenixsparkit.scala#l408-第427页
请注意,保存阵列仅在phoenix 4.5.0中受支持,但如果需要自己应用,则修补程序非常小:https://issues.apache.org/jira/browse/phoenix-1968
回答不错。感谢Phoenix城的人。