Не удалось создать таблицу кустов по нужному пути и вставить значения

Я хочу сделать таблицу в улье, содержащую только 1 столбец и 2 значения: «Y» и «N»

Я уже пробую это:

create external table if not exists tx_test_table  (FLAG string) 
row format delimited fields terminated by ','
stored as textfile location "/user/hdd/data/"; 

Мой вопрос: почему он находится в таблице по умолчанию? как пройти путь, который я желаю?

Когда я делаю запрос из таблицы, которую я просто делаю, мне не удалось показать поле (используя select * from)

Bad status for request TFetchResultsReq(fetchType=0,
operationHandle=TOperationHandle(hasResultSet=True, modifiedRowCount=None,
operationType=0, 
operationId=THandleIdentifier(secret='pE\xff\xfdu\xf6B\xd4\xb3\xb7\x1c\xdd\x16\x95\xb85', 
guid = "\n\x05\x16\xe7'\xe4G \xb6R\xe06\x0b\xb9\x04\x87")), 
orientation=4, maxRows=100): 
TFetchResultsResp(status=TStatus(errorCode=0,
 errorMessage='java.io.IOException: java.io.IOException: Not a file:
 hdfs://nameservice1/user/hdd/data/AC22', sqlState=None,
 infoMessages=['*org.apache.hive.service.cli.HiveSQLException:java.io.IOException:
 java.io.IOException: Not a file: hdfs://nameservice1/user/hdd/data/AC22:14:13', 
'org.apache.hive.service.cli.operation.SQLOperation:getNextRowSet:SQLOperation.java:496', 
'org.apache.hive.service.cli.operation.OperationManager:getOperationNextRowSet:OperationManager.java:297', 
'org.apache.hive.service.cli.session.HiveSessionImpl:fetchResults:HiveSessionImpl.java:869', 'org.apache.hive.service.cli.CLIService:fetchResults:CLIService.java:507', 
'org.apache.hive.service.cli.thrift.ThriftCLIService:FetchResults:ThriftCLIService.java:708', 
'org.apache.hive.service.rpc.thrift.TCLIService$Processor$FetchResults:getResult:TCLIService.java:1717', 
'org.apache.hive.service.rpc.thrift.TCLIService$Processor$FetchResults:getResult:TCLIService.java:1702', 
'org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39', 
'org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39', 'org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor:process:HadoopThriftAuthBridge.java:605', 
'org.apache.thrift.server.TThreadPoolServer$WorkerProcess:run:TThreadPoolServer.java:286', 
'java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1149', 
'java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:624', 'java.lang.Thread:run:Thread.java:748', 
'*java.io.IOException:java.io.IOException: Not a file: hdfs://nameservice1/user/hdd/data/AC22:18:4', 
'org.apache.hadoop.hive.ql.exec.FetchOperator:getNextRow:FetchOperator.java:521'
, 'org.apache.hadoop.hive.ql.exec.FetchOperator:pushRow:FetchOperator.java:428', 
'org.apache.hadoop.hive.ql.exec.FetchTask:fetch:FetchTask.java:146', 
'org.apache.hadoop.hive.ql.Driver:getResults:Driver.java:2227', 
'org.apache.hive.service.cli.operation.SQLOperation:getNextRowSet:SQLOperation.java:491', 
'*java.io.IOException:Not a file: hdfs://nameservice1/user/hdd/data/AC22:21:3', 
'org.apache.hadoop.mapred.FileInputFormat:getSplits:FileInputFormat.java:329', 
'org.apache.hadoop.hive.ql.exec.FetchOperator:getNextSplits:FetchOperator.java:372', 
'org.apache.hadoop.hive.ql.exec.FetchOperator:getRecordReader:FetchOperator.java:304', 
'org.apache.hadoop.hive.ql.exec.FetchOperator:getNextRow:FetchOperator.java:459'], statusCode=3),
 results=None, hasMoreRows=None)
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
251
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Каждая таблица в HDFS имеет собственное местоположение. И место, которое вы указали для своей таблицы, кажется, используется как обычное место, где расположены другие папки таблицы.

Согласно исключению: java.io.IOException:Not a file: hdfs://nameservice1/user/hdd/data/AC22:21:3' найдена хотя бы одна папка (не файл) в папке /user/hdd/data/. Я предполагаю, что это принадлежит какому-то другому столу.

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

Обычно расположение таблицы называется именем таблицы: /user/hdd/data/tx_test_table

Исправлено предложение создать таблицу:

create external table if not exists tx_test_table  (FLAG string) 
row format delimited fields terminated by ','
stored as textfile location "/user/hdd/data/tx_test_table";

Теперь таблица будет иметь собственное местоположение, в котором будут храниться ее файлы, а не смешанные с другими папками или файлами таблицы.

Вы можете поместить файлы в папку /user/hdd/data/tx_test_table или загрузить данные в таблицу с помощью INSERT, файлы будут созданы в папке.

оно работает! спасибо .. как насчет того, чтобы создать временную таблицу со столбцом FLAG только со значениями Y и N?

thecardcaptor 22.12.2020 14:42

Временные таблицы @thecardcaptor обычно управляются и удаляются автоматически по завершении сеанса, поэтому вам не нужно беспокоиться о их местоположении, пусть оно будет по умолчанию. Hive создаст его во временном файле пользователя. зачем вам таблица с одним столбцом и только Y, N???

leftjoin 22.12.2020 14:48

@thecardcaptor Ответил на ваш вопрос, пожалуйста, проверьте. Для этого вам не нужна временная таблица, также вам не нужен SELECT + UNION ALL, не нужен двойной. стек() работает быстрее

leftjoin 22.12.2020 14:58

Вы не возражаете, если мы поболтаем минут 5?

thecardcaptor 22.12.2020 15:14

@thecardcaptor хорошо

leftjoin 22.12.2020 15:19

Давайте продолжим обсуждение в чате.

leftjoin 22.12.2020 15:19

Другие вопросы по теме