Невозможно выполнить запрос выбора с выборочными столбцами для временного представления, зарегистрированного в приложении spark - PullRequest
0 голосов
/ 26 марта 2020

Я использую hive jdb c для загрузки данных из улья в мое искровое приложение.

Dataset<Row> dataset = spark.read()
    .format("jdbc")
    .option("url", "jdbc:hive2://<url with serviceDiscovery=zookeeper")
    .option("user","<user_name>")
        .option("dbtable", "((select * from schema.table_name limit 30) tbl)")
        .option("fetchsize","30")
    .load();

Примечание: имя schema.table состоит из столбца с именами col1, col2 и col3.

dataset.show()

Это дает мне фрейм данных с именами столбцов как tbl.col1, tbl.col2 и tbl.col3

Затем я регистрирую его временное представление.

dataset.createOrReplaceGlobalTempView("myTempTable");

Затем я запускаю свой пользовательский sql для этого myTempTable

Dataset<Row> myNewDataset = dataset.sqlContext().sql(select tbl.col1 from global_temp.myTempTable")

Но он выбрасывает ошибка:

org.apache.spark.sql.AnalysisException: cannot resolve '`tbl.col1`' given input columns: [mytemptable.tbl.col1, mytemptable.tbl.col2, mytemptable.tbl.col3]; line 1 pos 7;
'Project ['tbl.col1]
+- SubqueryAlias mytemptable
   +- Relation[tbl.col1#0,tbl.col2#1,tbl.col3#2] JDBCRelation(((select * from schema.table_name limit 30) tbl)) [numPartitions=1]

Примечание: эта команда работает совершенно нормально и дает те же результаты, что и dataset.show ()

Dataset<Row> myNewDataset = dataset.sqlContext().sql(select * from global_temp.myTempTable")

Пожалуйста, помогите мне, как запустить запрос на выборку временное представление с выборочными столбцами. Это также говорит имена столбцов с двумя "." между. Я пытался использовать запрос типа «выберите myTempTable.tbl.col1 из myTempTable», но он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...