小编Kes*_*ath的帖子

Parquet vs ORC vs ORC与Snappy

我正在对Hive可用的存储格式进行一些测试,并使用Parquet和ORC作为主要选项.我使用默认压缩包含ORC一次,使用Snappy包含一次.

我已经阅读了许多文件,说明Parquet在时间/空间复杂性方面比ORC更好,但我的测试与我经历的文件相反.

关注我的数据的一些细节.

Table A- Text File Format- 2.5GB

Table B - ORC - 652MB

Table C - ORC with Snappy - 802MB

Table D - Parquet - 1.9 GB
Run Code Online (Sandbox Code Playgroud)

就我的桌子的压缩而言,实木复合地板是最糟糕的.

我对上表的测试得出以下结果.

行计数操作

Text Format Cumulative CPU - 123.33 sec

Parquet Format Cumulative CPU - 204.92 sec

ORC Format Cumulative CPU - 119.99 sec 

ORC with SNAPPY Cumulative CPU - 107.05 sec
Run Code Online (Sandbox Code Playgroud)

列操作的总和

Text Format Cumulative CPU - 127.85 sec   

Parquet Format Cumulative CPU - 255.2 sec   

ORC Format Cumulative …
Run Code Online (Sandbox Code Playgroud)

hadoop hive snappy parquet orc

79
推荐指数
4
解决办法
5万
查看次数

集成测试Hive作业

我正在尝试使用Hive Thrift和JDBC接口编写一个非平凡的Hive作业,而我在设置一个像样的JUnit测试时遇到了麻烦.非平凡,我的意思是这项工作至少会产生一个MapReduce阶段,而不是只处理Metastore.

测试应该启动一个Hive服务器,将一些数据加载到一个表中,在该表上运行一些非平凡的查询,并检查结果.

我根据Spring参考连接了Spring上下文.但是,MapReduce阶段的作业失败,抱怨没有Hadoop二进制文件存在:

java.io.IOException:无法运行程序"/ usr/bin/hadoop"(在目录"/ Users/yoni/opower/workspace/intellij_project_root"中):error = 2,没有这样的文件或目录

问题是Hive Server在内存中运行,但依赖于Hive的本地安装才能运行.为了让我的项目自成一体,我需要嵌入Hive服务,包括HDFS和MapReduce集群.我尝试使用相同的Spring方法启动Hive服务器并将其指向MiniDFSClusterMiniMRCluster,类似于Hive QTestUtil源和HBaseTestUtility中使用的模式.但是,我无法让它发挥作用.

经过三天试图纠缠Hive集成测试后,我想我会问社区:

  1. 你如何推荐我集成测试Hive工作?
  2. 您是否有使用内存HDFS,MR和Hive实例的集成测试Hive作业的JUnit示例?

我看过的其他资源:

编辑:我完全清楚,针对Hadoop集群(无论是本地还是远程),可以针对全栈Hive实例运行集成测试.如上所述,问题在于,这不是有效测试Hive工作流的可行解决方案.

java testing hadoop hive mapreduce

71
推荐指数
2
解决办法
8513
查看次数

如何使用hadoop fs -copyToLocal命令覆盖现有文件

我们有什么方法可以覆盖现有文件,同时HDFS使用:

hadoop fs -copyToLocal <HDFS PATH> <local path>
Run Code Online (Sandbox Code Playgroud)

hadoop

46
推荐指数
5
解决办法
6万
查看次数

Spark无法找到JDBC驱动程序

所以我一直在使用sbt with assembly将我的所有依赖项打包成一个jar用于我的spark作业.我有几个工作,我c3p0用来设置连接池信息,广播出来,然后foreachPartition在RDD上使用然后获取连接,并将数据插入数据库.在我的sbt构建脚本中,我包含了

"mysql" % "mysql-connector-java" % "5.1.33"
Run Code Online (Sandbox Code Playgroud)

这可确保JDBC连接器与作业打包在一起.一切都很好.

所以最近我开始玩SparkSQL,并意识到简单地采用数据帧并将其保存到具有新功能的jdbc源更容易 1.3.0

我收到以下异常:

java.sql.SQLException:在java.sql中找不到合适的jdbc驱动程序:mysql://some.domain.com/myschema?user = user&password = password at java.sql.DriverManager.getConnection(DriverManager.java:596).的DriverManager.getConnection(DriverManager.java:233)

当我在本地运行时,我通过设置绕过它

SPARK_CLASSPATH=/path/where/mysql-connector-is.jar
Run Code Online (Sandbox Code Playgroud)

最终我想知道的是,为什么这个工作不应该找到驱动程序什么时候应该打包它呢?我的其他工作从未遇到过这个问题.从我可以告诉他们c3p0和数据帧代码都使用java.sql.DriverManager(它处理从我可以告诉你的一切导入所有)所以它应该工作得很好?如果有什么东西阻止汇编方法工作,我需要做些什么来使其工作?

jdbc apache-spark apache-spark-sql

26
推荐指数
6
解决办法
5万
查看次数

Hive无法手动设置减速器数量

我有以下配置单元查询:

select count(distinct id) as total from mytable;
Run Code Online (Sandbox Code Playgroud)

自动生成:
1408 Mappers
1 Reducer

我需要手动设置reducer的数量,我尝试了以下内容:

set mapred.reduce.tasks=50 
set hive.exec.reducers.max=50
Run Code Online (Sandbox Code Playgroud)

但这些设置似乎都没有得到尊重.该查询需要永远运行.有没有办法手动设置Reducer或重写查询,以便它可以导致更多的reducers?谢谢!

hadoop hive mapreduce

25
推荐指数
2
解决办法
4万
查看次数

Hive QL Except子句

如何EXCEPT在Hive QL中执行子句(如SQL)

我有2个表,每个表都是一列唯一的ID.

我想找到仅在表1中但不在表2中的ID列表

表格1

apple
orange
pear
Run Code Online (Sandbox Code Playgroud)

表2

apple
orange
Run Code Online (Sandbox Code Playgroud)

在SQL中你可以做一个EXCEPT子句(http://en.wikipedia.org/wiki/Set_operations_%28SQL%29),但你不能在Hive QL中做到这一点

hive

12
推荐指数
1
解决办法
2万
查看次数

无法将参数 1 从“v8::Local&lt;v8::Value&gt;”转换为“const v8::String::Utf8Value”

我正在尝试运行以下两个命令:

npm install
npm audit fix
Run Code Online (Sandbox Code Playgroud)

在 VS Code 中,当报告以下错误时。

error C2664: 'v8::String::Utf8Value::Utf8Value(const v8::String::Utf8Value &)': cannot conver
t argument 1 from 'v8::Local<v8::Value>' to 'const v8::String::Utf8Value &
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助解决这个问题!!

visual-studio node-modules node-sass

10
推荐指数
2
解决办法
8230
查看次数

在HPL/SQL中执行时出现SQL异常

我在执行hplsql时遇到问题.还添加了mapreduce任务计数.但是由于代码中的一些错误,执行没有通过.有人可以帮忙吗?如果我在执行中犯了任何错误,请帮助我.

 ./hplsql -e "SET mapred.reduce.tasks=1;SELECT 
    EAM_ASSET_BILL_OF_MATERIALS.QTY QTY,EAM_ASSET_BILL_OF_MATERIALS.AUX_DESC 
    AUX_DESC,EIM_STOCK_LOCATION_QUANTITIES.LOC_CODE 
    LOC_CODE,EIM_STOCK_LOCATION_QUANTITIES.NEW_QTY 
    NEW_QTY,EIM_STOCK_LOCATION_QUANTITIES.REB_QTY 
    REB_QTY,EIM_STOCK_LOCATION_QUANTITIES.CAP_QTY 
    CAP_QTY,EIM_STOCK_LOCATION_QUANTITIES.PRIMARY_FLAG 
    PRIMARY_FLAG,TSW_CODES.DESCRIPTION CATEGORY,TSW_PARTS.PART_NO 
    PART_NO,TSW_PARTS.NOUN NOUN,TSW_PARTS.QUALIFIER 
    QUALIFIER,TSW_PARTS.DESCRIPTION DESCRIPTION FROM 
    ABC_ORCL_WAS_M004P.EAM_ASSET_BILL_OF_MATERIALS EAM_ASSET_BILL_OF_MATERIALS  
    JOIN ABC_ORCL_WAS_M004P.TSW_CODES TSW_CODES ON 
    EAM_ASSET_BILL_OF_MATERIALS.CATEGORY_ID=TSW_CODES.CODE_ID JOIN 
    ABC_ORCL_WAS_M004P.TSW_PARTS TSW_PARTS ON 
    EAM_ASSET_BILL_OF_MATERIALS.CHILD_STK_NO=TSW_PARTS.PART_NO JOIN 
    ABC_ORCL_WAS_M004P.EIM_STOCK_LOCATION_QUANTITIES 
    EIM_STOCK_LOCATION_QUANTITIES ON 
    TSW_PARTS.PART_NO=EIM_STOCK_LOCATION_QUANTITIES.STK_NO WHERE 1 = 1 AND 
    EIM_STOCK_LOCATION_QUANTITIES.PRIMARY_FLAG = 'Y'"

    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/u01/tomcat/ABCD/Tomcat/webapps/ajc/WEB-INF/lib/tika-app-1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/u01/tomcat/ABCD/Tomcat/webapps/ajc/WEB-INF/lib/orc-tools-1.2.0-uber.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/u01/tomcat/ABCD/Tomcat/webapps/ajc/WEB-INF/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    log4j:WARN …
Run Code Online (Sandbox Code Playgroud)

hive mapreduce

6
推荐指数
0
解决办法
283
查看次数

Apache Hive:如何将字符串转换为时间戳?

我正在尝试将REC_TIME列中的字符串转换为蜂巢中的时间戳格式。

例如:UTC 2016年7月31日星期日09:28:20 => 2016-07-31 09:28:20

SELECT xxx, UNIX_TIMESTAMP(REC_TIME, "E M dd HH:mm:ss z yyyy") FROM wlogs LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

当我执行上述SQL时,它返回NULL值。

hadoop hive emr hiveql

5
推荐指数
1
解决办法
2万
查看次数

如何修改 web.config 中定义的 ASP.NET(Web 窗体)中的 HTTP 标头

我在ASP.NET(Web 表单)网站的 web.config 中定义了一些自定义 HTTP 响应标头。

我正在尝试编写一个managed HTTP module可以在将这些web.config定义的标头发送回客户端之前修改它们的方法。不幸的是,无论我使用什么事件 (PreSendRequestHeaders, EndRequest) ,集合中web.config都不存在定义的标头Response.Headers

我知道PreSendRequestHeaders不推荐这样做,所以我也尝试使用,Response.AddOnSendingHeaders但这也不能让我访问标题。

具体来说,我想要做的是为我们的Content Security Policy (CSP). 我想自动向所有内联脚本块添加一个 nonce 属性(我有一个可用的 POC),然后修改HTTP CSP header(在 web.config 中定义)以将“nonce-”项添加到该script-src部分。

我不想添加CSP headerin 代码,因为它经常更改,重新编译和发布网站会很痛苦。

我是否需要求助于本机IIS module来实现这一点,还是有某种方法可以使用托管代码(首选)来做到这一点?

asp.net web-config managed http-headers content-security-policy

5
推荐指数
0
解决办法
533
查看次数