如果表是ORC show create table,则在执行a 然后执行结果create table语句时发出问题.
使用show create table,你得到这个:
STORED AS INPUTFORMAT
‘org.apache.hadoop.hive.ql.io.orc.OrcInputFormat’
OUTPUTFORMAT
‘org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat’
Run Code Online (Sandbox Code Playgroud)
但是如果使用这些子句创建表,则在选择时会出现转换错误.错误喜欢:
异常java.io.IOException失败:java.lang.ClassCastException:org.apache.hadoop.hive.ql.io.orc.OrcStruct无法强制转换为org.apache.hadoop.io.BinaryComparable
要解决这个问题,只需将create table语句更改为STORED AS ORC
But,正如答案在类似问题中所述:
在Hive中'InputFormat,OutputFormat'和'Stored as'之间有什么区别?.
我无法弄清楚原因.
我正在尝试使用OpenCSVSerde以及一些整数和日期列创建一个表。但是列将转换为String。这是预期的结果吗?解决方法是,在此步骤之后进行显式类型转换(这会使完整的运行变慢)
hive> create external table if not exists response(response_id int,lead_id int,creat_date date ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ('quoteChar' = '"', 'separatorChar' = '\,', 'serialization.encoding'='UTF-8', 'escapeChar' = '~') location '/prod/hive/db/response' TBLPROPERTIES ("serialization.null.format"="");
OK
Time taken: 0.396 seconds
hive> describe formatted response;
OK
# col_name data_type comment
response_id string from deserializer
lead_id string from deserializer
creat_date string from deserializer
Run Code Online (Sandbox Code Playgroud)
解释将数据类型更改为字符串的源代码。
我是Bigdata的新手,目前正在学习Hive.作为SerDe的一部分,我理解Hive中的InputFormat和OutputFormat的概念.我也理解'Stored as'用于以特定格式存储文件,就像InputFormat一样.但我不明白使用'InputFormat,OutputFormat'和'Stored as'之间有什么重大区别.
任何帮助表示赞赏.
以下测试片段
implicit val formats = DefaultFormats + FullTypeHints(Contacts.classList)
val serialized = Serialization.write(List(Mail(field = "random@mail.com", note = "Random note.")))
println(serialized)
Serialization.read[List[Contact[_]]](serialized).isInstanceOf[List[Mail]] should be (true)
Run Code Online (Sandbox Code Playgroud)
失败了
Can't find constructor for Contact[Object]
org.json4s.package$MappingException: Can't find constructor for Contact[Object]
at org.json4s.reflect.package$.fail(package.scala:95)
at org.json4s.reflect.ScalaSigReader$$anonfun$5.apply(ScalaSigReader.scala:21)
at org.json4s.reflect.ScalaSigReader$$anonfun$5.apply(ScalaSigReader.scala:21)
at scala.Option.getOrElse(Option.scala:121)
at org.json4s.reflect.ScalaSigReader$.readConstructor(ScalaSigReader.scala:21)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.ctorParamType(Reflector.scala:93)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$createConstructorDescriptors$3$$anonfun$15.apply(Reflector.scala:156)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$createConstructorDescriptors$3$$anonfun$15.apply(Reflector.scala:142)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$createConstructorDescriptors$3.apply(Reflector.scala:142)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder$$anonfun$createConstructorDescriptors$3.apply(Reflector.scala:136)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.mutable.ArraySeq.foreach(ArraySeq.scala:74)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.createConstructorDescriptors(Reflector.scala:136)
at …Run Code Online (Sandbox Code Playgroud) 我正在测试 AWS 的 Athena 产品,到目前为止运行良好。但我想知道 SerDe 属性的列表。我找了很远很远也没有找到。例如"ignore.malformed.json" = "true",我正在使用这个,但我很确定还有很多其他选项可以调整查询。
例如,我找不到有关“路径”属性的作用的信息,因此拥有完整列表会很棒。
我查看了 Apache Hive 文档但找不到这个,在 AWS 文档/论坛上也没有。
谢谢!
我正在尝试查询HDFS上存储的以下JSON示例文件
{
"tag1": "1.0",
"tag2": "blah",
"tag3": "blahblah",
"tag4": {
"tag4_1": [{
"tag4_1_1": [{
"tag4_1_1_1": {
"Addr": {
"Addr1": "blah",
"City": "City",
"StateProvCd": "NY",
"PostalCode": "99999"
}
}
"tag4_1_1_1": {
"Addr": {
"Addr1": "blah2",
"City": "City2",
"StateProvCd": "NY",
"PostalCode": "99999"
}
}
}
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下内容在数据上创建了一个外部表
CREATE EXTERNAL TABLE DB.hv_table
(
tag1 string
, tag2 string
, tag3 string
, tag4 struct<tag4_1:ARRAY<struct<tag4_1_1:ARRAY<struct<tag4_1_1_1:struct<Addr
Addr1:string
, City:string
, StateProvCd:string
, PostalCode:string>>>>>>
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 'HDFS/location';
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想查询数据,以便其返回给我: …