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

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

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

  1. ADD JAR <path-to-hive-serdes-jar>;
  2. CREATE EXTERNAL TABLE tweets (
  3. id BIGINT,
  4. created_at STRING,
  5. source STRING,
  6. favorited BOOLEAN,
  7. retweeted_status STRUCT<
  8. text:STRING,
  9. user:STRUCT<screen_name:STRING,name:STRING>,
  10. retweet_count:INT>,
  11. entities STRUCT<
  12. urls:ARRAY<STRUCT<expanded_url:STRING>>,
  13. user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>,
  14. hashtags:ARRAY<STRUCT<text:STRING>>>,
  15. text STRING,
  16. user STRUCT<
  17. screen_name:STRING,
  18. name:STRING,
  19. friends_count:INT,
  20. followers_count:INT,
  21. statuses_count:INT,
  22. verified:BOOLEAN,
  23. utc_offset:INT,
  24. time_zone:STRING>,
  25. in_reply_to_screen_name STRING
  26. )
  27. PARTITIONED BY (datehour INT)
  28. ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
  29. LOCATION '/user/flume/tweets';

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

  1. select * from tweets;

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

yr9zkbsy

yr9zkbsy1#

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

  1. log4j.rootCategory=DEBUG,console
  2. log4j.appender.console=org.apache.log4j.ConsoleAppender
  3. log4j.appender.console.target=System.err
  4. log4j.appender.console.layout=org.apache.log4j.PatternLayout
  5. 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,我希望您能从中找到一些有用的东西。

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

相关问题