msgstr "java.io.IOException: невозможно получить основной принципал Kerberos для использования в качестве средства обновления" при чтении csv из кластера - PullRequest
0 голосов
/ 30 сентября 2018

Я использую scala версии 2.11.4 с spark 2.1.1 и hadoop версии 2.6.0-cdh5.7.1.ниже приведены фрагменты кода, которые я использую для чтения csv-файла, но попадаю в «java.io.IOException: не удается получить основной принципал Kerberos для использования в качестве источника обновления».Я запускаю эту программу из моего intelliji подключения к кластеру Cloudera из моего локального.Я использую аутентификацию Kerberos для подключения к кластеру.вплоть до строки "diamonds.printSchema", программа работает отлично, но не удается при попытке прочитать CSV-файл, но может прочитать CSV-файл как sqlContext.read.textFile ("/ tmp / xyz / data.csv").Я попробовал Google, но пока не повезло.журнал проблем https://issues.apache.org/jira/browse/SPARK-20328, кажется, связан, но не мог найти то, что обходной путь.кто-нибудь сталкивался с этой проблемой?благодарю вас за помощь

val spark: SparkSession = {
  SparkSession
    .builder()
    .master(master)
    .appName(appName)
    .enableHiveSupport()
    .getOrCreate()
}
val sqlContext = spark.sqlContext
var parquet = sqlContext.read.parquet("../data.parquet/part.snappy.parquet")
parquet.printSchema()
//parquet.write.mode(SaveMode.Append).save("/tmp/xyz/data.parquet")
val diamonds = sqlContext.read.textFile("/tmp/xyz/data.csv")
diamonds.printSchema
val readcsv = sqlContext.read.format("com.databricks.spark.csv").option("header", "true") .load("/tmp/xyz/data.csv")

Я сталкиваюсь с проблемой ниже при попытке получить доступ к CSV-файлу из кластера Cloudera.

Исключение в потоке "main" java.io.IOException: не могуполучить основной принципал Kerberos для использования в качестве источника обновления в org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal (TokenCache.java:133) в org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamendesв org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodes (TokenCache.java:80) в org.apache.hadoop.mapred.FileInputFormat.listStatus (FileInputFormat.java:206) в org.apache.matad.map.getSplits (FileInputFormat.java:315) в org.apache.spark.rdd.HadoopRDD.getPartitions (HadoopRDD.scala: 202) в org.apache.spark.rdd.RDD $$ anonfun $ разделов $ 2.apply (RDD.scala: 252) в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 250) в scala.Option.getOrElse (Option.scala: 120) в org.apache.spark.rdd.RDD.partitions (RDD.scala: 250) в org.apache.spark.rdd.MapPartitionsRDD.getPartitions (MapPartitionsRDD.scala: 35) в org.apache.spark.rdd.RDD $$ anonfun $ разделов $ 2.apply (RDD.scala: 252)в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 250) в scala.Option.getOrElse (Option.scala: 120) в org.apache.spark.rdd.RDD.partitions(RDD.scala: 250) в org.apache.spark.rdd.MapPartitionsRDD.getPartitions (MapPartitionsRDD.scala: 35) в org.apache.spark.rdd.RDD $$ anonfun $ разделов $ 2.apply (RDD.scala: 252) в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 250) в scala.Option.getOrElse (Option.scala: 120) в org.apache.spark.rdd.RDD.разделы (RDD.scala: 250) в org.apache.spark.rdd.RDD $$ anonfun $ take $ 1.apply (RDD.scala: 1333) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 112) в org.apache.spark.rdd.RDD.withScope (RDD.scala: 362) в org.apache.spark.rdd.RDD.take (RDD.scala: 1327) в org.apache.spark.rdd.RDD $$ anonfun $ first $ 1.apply (RDD.scala: 1368) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 151) в org.apache.spark.rdd.RDDOperationScope $ .withScope (RDDOperationScope.scala: 112) в org.apache.spark.rdd.RDD.withScope (RDD.scala: 362) в org.apache.spark.rdd.RDD.first (RDD.scala: 1367)в org.apache.spark.sql.execution.datasources.csv.CSVFileFormat.findFirstLine (CSVFileFormat.scala: 206) в org.apache.spark.sql.execution.datasources.csv.CSVFileFormat.inferSchema (CSVFileFormat.sc)в org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply (DataSource.scala: 184) в org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply (DataSource.scala: 184) в scala.Option.orElse (Option.scala: 288) в org.apache.spark.sql.execution.datasources.DataSource.org $ apache $ spark $ sql $ выполнение $ источники данных $ DataSource $$ getOrInferFileFormatSchema (DataSource.scala: 183) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation (DataSource.scala: 387)в org.apache.spark.sql.DataFrameReader.load (DataFrameReader.scala: 152) в org.apache.spark.sql.DataFrameReader.load (DataFrameReader.scala: 135) в LoadCSV $ .main (LoadCSV.scala: 44)в LoadCSV.main (LoadCSV.scala)

...