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

Java 如何在调试模式下运行配置单元,java,hadoop,hive,Java,Hadoop,Hive,我以cloudera网站为例,编写了一个用于解析文件的自定义SerDe 这似乎是一个很好的例子,但当我使用自定义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

我以cloudera网站为例,编写了一个用于解析文件的自定义SerDe

这似乎是一个很好的例子,但当我使用自定义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';

我什么也没有得到,所以我想知道我是否可以在调试模式下运行hive以查看失败的位置。可以调试hive代码。此链接可能会帮助您:

您最好按如下所示将记录器模式切换为调试来启动hive shell,我希望您能从中找到有用的东西

hive --hiveconf hive.root.logger=DEBUG,console
由于公司特定的设置,设置
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
启动了HiveShell,它将您的主目录添加到类路径前面的
hive-log4j.properties
,因此将其拾取。

也可以很容易地将其定向到文件:hive--hiveconf-hive.root.logger=DEBUG,默认情况下它将在/tmp//hive.log中结束
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