я пытаюсь сделать выбор * из базы данных dab.ab c в улье, эта таблица улья была загружена с использованием spark
, это не работает, показывает ошибку:
Ошибка: java .io.IOException: java .lang.IllegalArgumentException: bucketId вне диапазона: -1 (состояние =, код = 0)
, когда я использовал следующие свойства, я был в состоянии запросить улей:
set hive.mapred.mode=nonstrict;
set hive.optimize.ppd=true;
set hive.optimize.index.filter=true;
set hive.tez.bucket.pruning=true;
set hive.explain.user=false;
set hive.fetch.task.conversion=none;
теперь, когда я пытаюсь прочитать ту же таблицу улья db.ab c, используя искру, я получаю ошибку, как показано ниже:
Клиенты могут получить доступ к этой таблице, только если у них есть следующие возможности: CONNECTORREAD, HIVEFULLACIDREAD, HIVEFULLACIDWRITE, HIVEMANAGESTATS, HIVECACHEINVALIDATE, CONNECTORWRITE. Эта таблица может быть таблицей ACID, управляемой Hive, или требовать какой-то другой возможности, которую Spark в настоящее время не реализует; в орг. apache .spark. sql .catalyst.catalog.CatalogUtils $ .throwIfNoAccess (ExternalCatalogUtils. scala: 280) в орг. apache .spark. sql .hive.HiveTranslationLayerCheck $$ anonfun $ apply $ 1.applyOrElse (HiveTranslationLayerStrategies. scala: 105) в org. apache .spark. sql .hive.HiveTranslationLayerCheck $$ anonfun $ apply $ 1.applyOrElse (HiveTranslationLayerStrategies. scala). 1035 * .spark. sql .catalyst.trees.TreeNode $$ anonfun $ transformUp $ 1.apply (TreeNode. scala: 289) в org. apache .spark. sql .catalyst.trees.TreeNode $ $ anonfun $ transformUp $ 1.apply (TreeNode. scala: 289) в org. apache .spark. sql .catalyst.trees.CurrentOrigin $ .withOrigin (TreeNode. scala: 70) в org. apache .spark. sql .catalyst.trees.TreeNode.transformUp (TreeNode. scala: 288) в org. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 3.apply ( TreeNode. scala: 286) в орг. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 3.apply (TreeNode. scala: 286) в орг. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 4.Apply (TreeNode. scala: 306) в орг. apache .spark. sql .catalyst.trees.TreeNode.mapProductIterator (TreeNode. scala: 187) в орг. apache .spark. sql .catalyst.trees. TreeNode.mapChildren (TreeNode. scala: 304) в орг. apache .spark. sql .catalyst.trees.TreeNode.transformUp (TreeNode. scala: 286) в орг. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 3.apply (TreeNode. scala: 286) в org. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 3.apply (TreeNode . scala: 286) в орг. apache .spark. sql .catalyst.trees.TreeNode $$ anonfun $ 4.apply (TreeNode. scala: 306) в орг. apache .spark. sql .catalyst.trees.TreeNode.mapProductIterator (TreeNode. scala: 187) в орг. apache .spark. sql .catalyst.trees.TreeNode.mapChildren (TreeNode. scala: 304) в орг. . apache .spark. sql .catalyst.trees.TreeNode.transformUp (TreeNode. scala: 286) в org. apache .spark. sql .hive.HiveTranslationLayerCheck.apply (HiveTranslationLayerStrategies. scala: 85) в орг. apache .spark. sql .hive.HiveTranslationLayerCheck.apply (HiveTranslationLayerStrategies. scala: 83) в org. apache .spark. sql .catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1 $$ anonfun $ apply $ 1.apply (RuleExecutor. scala: 87) в org. apache. spark. sql .catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1 $$ anonfun $ apply $ 1.apply (RuleExecutor. scala: 84) в scala .collection.LinearSeqOptimized $ class.foldLeft (LinearSeqOptimized. scala: 124) в scala .collection.immutable.List.foldLeft (List. scala: 84) в org. apache .spark. sql .catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1 .apply (RuleExecutor. scala: 84) в орг. apache .spark. sql .catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1.apply (RuleExecutor. scala: 76) в scala .collection.immutable.List.foreach (List. scala: 392) в org. apache .spark. sql .catalyst.rules.RuleExecutor.execute (RuleExecutor. scala: 76) в org. apache .spark. sql .catalyst.analysis.Analyzer.org $ apache $ spark $ sql $ катализатор анализ $ $ Analyzer $$ executeSameContext (Analyzer. scala: 124) в орг. apache .spark. sql .catalyst.analysis.Analyzer.execute (Analyzer. scala: 118) в орг. apache .spark. sql .Catalyst.analysis.Analyzer. executeAndCheck (Analyzer. scala: 103) в орг. apache .spark. sql .execution.QueryExecution.analyzed $ lzycompute (QueryExecution. scala: 57) в орг. apache .spark. sql .execution.QueryExecution.analyzed (QueryExecution. scala: 55) в орг. apache .spark. sql .execution.QueryExecution.assertAnalyzed (QueryExecution. scala: 47) в орг. apache. spark. sql .Dataset $ .ofRows (Набор данных. scala: 74) в орг. apache .spark. sql .SparkSession. sql (SparkSession. scala: 642) ... 49 elided
мне нужно добавить какие-либо свойства в spark-submit или shell? или как можно альтернативно прочитать эту таблицу Hive, используя формат образца таблицы ульев Spark
:
CREATE TABLE `hive``( |
| `c_id` decimal(11,0),etc.........
ROW FORMAT SERDE |
| 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' |
| WITH SERDEPROPERTIES (
STORED AS INPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' |
| OUTPUTFORMAT |
| 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' |
LOCATION |
| path= 'hdfs://gjuyada/bbts/scl/raw' |
| TBLPROPERTIES ( |
| 'bucketing_version'='2', |
| 'spark.sql.create.version'='2.3.2.3.1.0.0-78', |
| 'spark.sql.sources.provider'='orc', |
| 'spark.sql.sources.schema.numParts'='1', |
| 'spark.sql.sources.schema.part.0'='{"type":"struct","fields":
[{"name":"Czz_ID","type":"decimal(11,0)","nullable":true,"metadata":{}},
{"name":"DzzzC_CD","type":"string","nullable":true,"metadata":{}},
{"name":"C0000_S_N","type":"decimal(11,0)","nullable":true,"metadata":{}},
{"name":"P_ _NB","type":"decimal(11,0)","nullable":true,"metadata":{}},
{"name":"C_YYYY","type":"string","nullable":true,"metadata":{}},"type":"string","nullable":true,"metadata":{}},{"name":"Cv_ID","type":"string","nullable":true,"metadata":{}},
| 'transactional'='true', |
| 'transient_lastDdlTime'='1574817059')