создать стол в фениксе из искры

Привет, мне нужно создать таблицу в Phoenix из искровой работы. Я пробовал 2 способа ниже, но ни один из них не работает, кажется, это все еще не поддерживается.

1) Dataframe.write по-прежнему требует, чтобы таблицы существовали ранее

df.write.format("org.apache.phoenix.spark").mode("overwrite").option("table", schemaName.toUpperCase + "." + tableName.toUpperCase  ).option("zkUrl", hbaseQuorum).save()

2) если мы подключимся к Phoenix через JDBC и попытаемся выполнить CREATE statemnt, то мы получим ошибку синтаксического анализа (то же самое create работает в Phoenix)

var ddlCode="create table test (mykey integer not null primary key, mycolumn varchar) "

val driver = "org.apache.phoenix.jdbc.PhoenixDriver"
val jdbcConnProps = new Properties()
jdbcConnProps.setProperty("driver", driver);
val jdbcConnString = "jdbc:phoenix:hostname:2181/hbase-unsecure"
sqlContext.read.jdbc(jdbcConnString, ddlCode, jdbcConnProps)

ошибка: org.apache.phoenix.exception.PhoenixParserException: ОШИБКА 601 (42P00): синтаксическая ошибка. Обнаружено "create" в строке 1, столбце 15.

Кто-нибудь с похожими проблемами, которому удалось сделать это по-другому?


person tonizz    schedule 21.07.2016    source источник
comment
Вы нашли выход из вышеуказанной проблемы? Я тоже искал то же самое.   -  person pjain    schedule 02.08.2016


Ответы (1)


Я наконец-то нашел решение для этого. В принципе, я считаю, что ошибался, пытаясь использовать для этого метод чтения SQLContext. Думаю, этот метод предназначен только для «чтения» источников данных. В основном это было сделано, чтобы открыть стандартное соединение JDBC с Phoenix:

var ddlCode="create table test (mykey integer not null primary key, mycolumn varchar) "
val jdbcConnString = "jdbc:hostname:2181/hbase-unsecure"
val user="USER"
val pass="PASS"
var connection:Connection = null
Class.forName(driver)
connection = DriverManager.getConnection(jdbcConnString, user, pass)
val statement = connection.createStatement()
statement.executeUpdate(ddlCode)
person tonizz    schedule 02.08.2016