1

SnappyData v.0-5

我遇到的问题是我的 JDBC Connection 的表元数据和 Pulse Web App 看不到我在下面创建的表。

我使用 shell 和 csv 文件在 SnappyData 中创建了一个表。

数据在这里(roads.csv):

"roadId","name"
"1","Road 1"
"2","Road 2"
"3","Road 3"
"4","Road 4"
"5","Road 5"
"6","Road 6"
"7","Road 7"
"8","Road 8"
"9","Road 9"
"10","Road 10"

==================================================== ========

snappy>  CREATE TABLE STAGING_ROADS
(road_id string, name string)
USING com.databricks.spark.csv
OPTIONS(path '/home/ubuntu/data/example/roads.csv', header 'true');


snappy> select * from STAGING_ROADS

Returns 10 rows.

我有一个 SnappyData JDBC 连接(DBVisualizer 和 SquirrelSQL 显示相同)。我在元数据的“表格”列表中看不到该表格。但是,如果我执行“从 STAGING_ROADS 中选择 *”。

返回 10 行带有 CLOB 的行,顺便说一句,这些行完全不可用。

road_id  |      name
=====================
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB
CLOB        CLOB

其次,当我从 snappy> shell 中创建表时,Pulse Web App 没有注册我创建的表。但是,如果我从 JDBC 客户端运行 CREATE TABLE 命令,它会显示得很好。

我做错了什么吗?如何获取有关我在 snappy> shell 中创建的表的元数据以显示在 JDBC 和 Pulse 中?

4

2 回答 2

2

我遇到的问题是我的 JDBC Connection 的表元数据和 Pulse Web App 看不到我在下面创建的表。

这是一个已知问题 ( https://jira.snappydata.io/browse/SNAP-303 )。JDBC 元数据仅显示存储中的项目,而不显示外部表。在跟踪元数据问题时,Pulse webapp 将无法查看此类外部表,因为它旨在监控 snappydata 存储。

注意:“CREATE TABLE”DDL 已更改为“CREATE EXTERNAL TABLE”(https://github.com/SnappyDataInc/snappydata/pull/311),用于商店以外的来源,以使事情更清晰。

如何获取有关我在 snappy> shell 中创建的表的元数据以显示在 JDBC 和 Pulse 中?

它将显示内部 SnappyData 源:列和行表。对于 USING 中的其他提供者,它们将不会如前所述出现。

CSV 表通常仅用于将数据加载到列或行表中,如@jagsr 提供的示例所示。

于 2016-07-26T14:40:35.537 回答
1

没想到使用以 Spark.csv 为数据源的 SQL 创建表已经过测试。这是一个相关的 JIRA - https://jira.snappydata.io/browse/SNAP-416

我们一直建议人们使用 Spark Job 来并行加载数据。您也可以使用 spark-shell 执行此操作。

        stagingRoadsDataFrame = snappyContext.read
        .format("com.databricks.spark.csv") 
        .option("header", "true") // Use first line of all files as header
        .option("inferSchema", "true") // Automatically infer data types
        .load(someFile)
// Save Dataframe as a Row table
      stagingRoadsDatFrame.write.format("row").options(props).saveAsTable("staging_roads")

也就是说,你能试试吗(也许这可能有效)-

 CREATE TABLE STAGING_ROADS (road_id varchar(100), name varchar(500))

请注意,SQL 中没有“字符串”作为数据类型。默认情况下,在不知道最大长度的情况下,我们将其转换为 CLOB。我们也在努力解决这个问题。

于 2016-07-26T00:31:37.653 回答