如何在调试模式下运行配置单元

odopli94  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(345)

我以cloudera网站为例编写了一个用于解析文件的自定义serde
http://blog.cloudera.com/blog/2012/12/how-to-use-a-serde-in-apache-hive/
这似乎是一个很好的例子,但当我用自定义serde创建表时

ADD JAR <path-to-hive-serdes-jar>;

CREATE EXTERNAL TABLE tweets (
  id BIGINT,
  created_at STRING,
  source STRING,
  favorited BOOLEAN,
  retweeted_status STRUCT<
    text:STRING,
    user:STRUCT<screen_name:STRING,name:STRING>,
    retweet_count:INT>,
  entities STRUCT<
    urls:ARRAY<STRUCT<expanded_url:STRING>>,
    user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
    hashtags:ARRAY<STRUCT<text:STRING>>>,
  text STRING,
  user STRUCT<
    screen_name:STRING,
    name:STRING,
    friends_count:INT,
    followers_count:INT,
    statuses_count:INT,
    verified:BOOLEAN,
    utc_offset:INT,
    time_zone:STRING>,
  in_reply_to_screen_name STRING
) 
PARTITIONED BY (datehour INT)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
LOCATION '/user/flume/tweets';

它执行得非常好,但当我这样做

select * from tweets;

我什么也没有得到,所以我想知道我是否可以在调试模式下运行配置单元,看看它在哪里失败

yr9zkbsy

yr9zkbsy1#

设置 hive --hiveconf hive.root.logger=DEBUG,console 由于公司特定的设置,可能无法始终工作。
我最终创造了一个 hive-log4j.properties “我的主目录”中具有以下设置的文件:

log4j.rootCategory=DEBUG,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

并开始使用 CLASSPATH=$HOME hive 它添加了您的主目录 hive-log4j.properties 在类路径前面,因此被拾取。

ltqd579y

ltqd579y2#

可以调试配置单元代码。此链接可以帮助您:https://cwiki.apache.org/confluence/display/hive/developerguide#developerguide-调试HiveCode

7gyucuyw

7gyucuyw3#

您最好通过如下方式将logger模式切换到debug来启动hiveshell,我希望您能从中找到一些有用的东西。

hive --hiveconf hive.root.logger=DEBUG,console

相关问题