对于分区的Avro配置单元表,在Avro模式中具有大写字符的字段名将被拉回为空。我想知道我是否缺少一些设置/解决方法,或者这只是一个配置单元上下文的错误。
我已经尝试过将以下内容添加到DDL中:
WITH SERDEPROPERTIES ('casesensitive'='FieldName')
…并设置spark.sql。区分大小写,对真/假敏感
Spark版本1.5.0 Hive版本1.1.0
您可以通过在 Hive 中运行以下 DDL 来重新创建问题:
-- Hive DDL using partitions
CREATE TABLE avro_partitions (Field string)
PARTITIONED BY (part string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES ('avro.schema.literal'=
'{ "type":"record", "name":"avro_partitions", "namespace":"default", "fields":[ {"name":"Field", "type":"string"} ] }');
INSERT INTO avro_partitions PARTITION (part='01') VALUES('test');
-- Hive DDL without partitions
CREATE TABLE avro_no_partitions (Field string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES ('avro.schema.literal'=
'{ "type":"record", "name":"avro_no_partitions", "namespace":"default", "fields":[ {"name":"Field", "type":"string"} ] }');
INSERT INTO avro_no_partitions VALUES('test');
...
sqlContext.sql("select * from default.avro_partitions").show
+-----+----+
|field|part|
+-----+----+
| null| 01|
+-----+----+
sqlContext.sql("select * from default.avro_no_partitions").show
+-----+
|field|
+-----+
| test|
+-----+
问题是指定avro.schema。TBLProperty中的文字-应在SerdeProperty中指定:
CREATE TABLE avro_partitions (Field string)
PARTITIONED BY (part string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES ('avro.schema.literal'='{ "type":"record", "name":"avro_partitions", "namespace":"default", "fields":[ {"name":"Field", "type":"string"} ] }')
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat';
INSERT INTO avro_partitions PARTITION (part='01') VALUES('test');
Spark版本1.6.0
问题内容: 基本要求是使用关键字作为标识符,因此我想从其上下文中区分标记。(例如,是关键字,但我们允许使用名为的变量)。 在Java中,这是可能的,但是很难,这是我的方法 来源在这里,我可以通过区分令牌和上下文。 这是可行的,但要做的事情繁琐,需要添加很多额外的状态并维护很多状态。是否有任何简单的方法来实现这一目标? 问题答案: JavaCC FAQ中概述了执行此操作的三种方法。 一种是像您一样使
PrimeFaces 4.0、Glassfish 3.1.2、Mojarra 2.1.6 我创建了一个p:dataTable和一个对dataTable的contextMenu引用。dataTable的第一列包含p:commandLink。问题是,如果我用鼠标右键单击commandLink,则该行不会被选中。如何选择实际行?我用Javascript尝试了一下,但没有结果。 我想,我应该使用Prime
我的(非常基础的)jsp看起来像这样: 我的控制器提供这个: 我尝试过返回mav对象,以及将对象添加到传递的模型中。但无济于事,每当我进入页面时,我都会得到 maven窗口显示“试图在空上下文对象上调用方法getTitle()” 我一定看了无数的教程,我就是不知道我做错了什么。做任何前端的新手也没有帮助! 谢谢!
我正在阅读spring framework文档,现在我正在讨论应用程序范围概念。关于这个概念的文档是这样说的: 这有点类似于Spring单例bean,但有两个重要的区别:它是每个ServletContext的单例,而不是每个Spring ApplicationContext的单例 对我来说,不清楚的是我们如何想象Spring应用程序上下文和Servlet上下文之间的关系。 那么,Spring应用程
我有一个web应用程序部署与Tomcat服务器,我有一个例外。 名称jdbc/_userright与上下文无关
我正在编写一个bash shell脚本来输出文件名的后缀。 在这种情况下,我使用: 因此,输出例如: 但是,如果文件名没有后缀,因此没有点,我该怎么办?我的输出应该是“无后缀”,但我不知道如何用sed做到这一点。 编辑我已经尝试过的内容: 目录: 输入: 输出: