在Snappy shell中创建的表不会显示在JDBC或Pulse

时间:2016-07-25 23:21:59

标签: snappydata

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显示相同)。 我无法在元数据的“TABLES”列表中看到该表。 但是,如果我执行“select * from STAGING_ROADS”。

返回10行CLOB,其中btw完全无法使用。

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

其次,Pulse Web App没有注册我在创建表时从snappy>贝壳。但是,如果我从JDBC客户端运行CREATE TABLE命令,那么它就显示出来了。

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

2 个答案:

答案 0 :(得分: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提供的示例所示。

答案 1 :(得分:1)

没想到使用SQL创建一个表,其中Spark.csv是数据源已经过测试。这是一个相关的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中没有“String”作为数据类型。默认情况下,在不知道最大长度的情况下,我们将其转换为CLOB。我们也在努力解决这个问题。