首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法执行单元脚本

无法执行单元脚本
EN

Stack Overflow用户
提问于 2014-04-29 10:16:46
回答 1查看 1.8K关注 0票数 0

我已经安装了单节点集群hadoop和hive。我能够加载数据并显示在蜂巢中。我想要执行一个创建临时函数的脚本。我需要添加jar文件。jar文件是添加esri-几何学-api.jar空间-sdk-hive-1.0-MODIFIED.jar和HiveUDFs.jar

我引用了:How to write a script file in Hive?,我得到了这个错误:esri-几何学-api.jar不存在

我的配置细节:

代码语言:javascript
复制
$ echo $HADOOP_HOME:/home/hduser/hadoop-1.2.1
$ echo $JAVA_HOME:/usr/lib/java/jdk1.7.0_55
$ echo $:HIVE_HOME:/home/hduser/hadoop-1.2.1/hive-0.9.0-bin

java version "1.7.0_55"
Java(TM) SE Runtime Environment (build 1.7.0_55-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode)

hadoop版本:

代码语言:javascript
复制
Hadoop 1.2.1
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152
Compiled by mattf on Mon Jul 22 15:23:09 PDT 2013
From source with checksum 6923c86528809c4e7e6f493b6b413a9a
This command was run using /home/hduser/hadoop-1.2.1/hadoop-core-1.2.1.jar


HIVE VERSION: hive-0.9.0
hduser@ubuntu:~$ echo $HIVE_HOME
/home/hduser/hadoop-1.2.1/hive-0.9.0-bin

我有一个单元脚本,我需要按以下方式执行:我有一个在5秒时间间隔内具有经度的数据。

代码语言:javascript
复制
add jar esri-geometry-api.jar spatial-sdk-hive-1.0-MODIFIED.jar HiveUDFs.jar;
create temporary function ST_AsText as 'com.esri.hadoop.hive.ST_AsText';
create temporary function ST_Intersects as 'com.esri.hadoop.hive.ST_Intersects';
create temporary function ST_Length as 'com.esri.hadoop.hive.ST_Length';
create temporary function ST_LineString as 'com.esri.hadoop.hive.ST_LineString';
create temporary function ST_Point as 'com.esri.hadoop.hive.ST_Point';
create temporary function ST_Polygon as 'com.esri.hadoop.hive.ST_Polygon';
create temporary function ST_SetSRID as 'com.esri.hadoop.hive.ST_SetSRID';
create temporary function collect_array as 'com.zombo.GenericUDAFCollectArray';
SELECT
    id,
    unix_timestamp(dt) - unix_timestamp(fv)
FROM (
    SELECT
        id, dt, fv
    FROM (
        SELECT
            id, dt,
            FIRST_VALUE(dt) OVER (PARTITION BY id ORDER BY dt) as fv,
            ROW_NUMBER() OVER (PARTITION BY id ORDER BY dt DESC) as lastrk
        FROM
            uber
        ) sub1
    WHERE
        lastrk = 1
    ) sub2
WHERE
    (unix_timestamp(dt) - unix_timestamp(fv)) < 28800;

我的问题如下:

  1. 我是否需要在运行HIVE之前启动hadoop服务,因为我观察到我可以直接运行HIVE而不启动HADOOP服务。如果是的话,那么拥有hadoop有什么意义,我如何将它与蜂巢一起使用呢?
  2. 当我尝试手动添加JAR时,它给出了以下错误: hive> add JAR、esri-几何图形-api.jar /home/hduser/hadoop_jar;esri-几何学-api.jar不存在。 hive>添加jar -几何-api.jar;esri-几何学-api.jar不存在

我还添加了hive-site.xml如下所示:

代码语言:javascript
复制
<configuration>
<property>
<name>hive.aux.jars.path</name>
<value>file:///home/hduser/hadoop_jar/HIVEUDFs.jar,
file:///home/hduser/hadoop_jar/esri-geometry-api-1.0.jar,
file:///home/hduser/hadoop_jar/spatial-sdk-json-1.0.1-sources.jar</value>
</property>
</configuration>

我将jar文件添加到hadoop文件夹中我的hive目录的lib文件夹中。

  1. 当我尝试运行脚本时: hduser@ubuntu:~/查询$ hive queries.hive 警告:不建议使用org.apache.hadoop.metrics.jvm.EventCounter。请在所有的org.apache.hadoop.log.metrics.EventCounter文件中使用log4j.properties。使用配置在jar:file:/home/hduser/hadoop-1.2.1/hive-0.9.0-bin/lib/hive-common-0.9.0.jar!/hive-log4j.properties蜂巢历史记录file=/tmp/hduser/hive_job_log_hduser_201404290234_597714109.txt中初始化日志记录 hive>
  2. 当我发出list jar;命令时,它会发出: file:/home/hduser/hadoop-1.2.1/hive-0.9.0-bin/lib/hive-builtins-0.9.0.jar
  3. 我需要执行这个脚本。请帮帮忙。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-29 10:59:32

无法执行脚本的原因是缺少-f选项,执行脚本如下所示:

代码语言:javascript
复制
hduser@ubuntu:~/queries$ hive -f queries.hive
  • 因为hive内部使用Hadoop来保存其数据,而Mapreduce用于执行。在执行hive命令时应该启动Hadoop服务。
  • 在add语句中,应该指定jar完成的路径,每个jar应该按以下方式分别指定

添加jar /esri-几何学-api.jar;添加jar /spatial-sdk-hive-1.0-MODIFIED.jar;添加JAR /HiveUDFs.jar;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23361796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档