2016-02-26 2 views
1

Я пытаюсь прочитать файл HDFS, созданный таблицей HIVE. Файл находится в текстовом формате. когда я открываю файлы, я с удивлением вижу, что в строках нет поля.Файл базы данных Hive не имеет разделителя

Улей может читать файлы ... но очень очень медленно. поэтому я хочу прочитать контент, используя искру.

для того, чтобы понять схему таблицы я сделал

describe extended foo 

и я вижу этот выход

Detailed Table Information Table(tableName:foo, dbName:bar, owner:me, 
createTime:1456445643, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols: 
[FieldSchema(name:some_ts, type:int, comment:null), FieldSchema(name:id, 
type:string, comment:null), FieldSchema(name:t_p_ref, type:string, 
comment:null) location:hdfs://nameservice1/user/hive/bar.db/ft, 
inputFormat:org.apache.hadoop.mapred.TextInputFormat, 
outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, 
compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, 
serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters: 
{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, 
skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], 
skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], 
parameters:{numFiles=79, COLUMN_STATS_ACCURATE=true, 
transient_lastDdlTime=1456446229, totalSize=8992777753, numRows=20776467, 
rawDataSize=8972001286}, viewOriginalText:null, viewExpandedText:null, 
tableType:MANAGED_TABLE) 

Так что выход не показывает «DELIM» на всех. Итак, как я могу прочитать этот файл? Некоторые из полей являются URL-адресами, и поэтому довольно сложно попытаться прочитать его как тип фиксированной ширины файла

ответ

1

Почему бы не прочитать данные через spark sql - что довольно приятно читать таблицы улей с помощью HiveContext? В этом случае вы также правильно настроили типы данных из фреймворка данных.

Так что-то вроде

val hc = new HiveContext(sc) 
val df = hc.sql("select * from foo limit 10") 
// perform operations on your dataframe .. 
+0

не будет, что будет так же медленно? так как он все еще использует Hive под капюшонами. –

+1

Нет, он не использует куст под капотом - только метафорическое метательное изображение для улья. Spark может выполнять работу с десятками и сотнями рабочих в вычислительной среде Spark, которая быстрее, чем Hive. – javadba

Смежные вопросы