我正在尝试将配置单元列的输出转换为键值对。
sqlContext = HiveContext(sc)
id1 = sqlContext.sql("select instance_id from temp_table")
pairs1 = id1.map(lambda s: (int(s), 'Configuration'))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
TypeError: int() argument must be a string or a number, not 'Row'
Run Code Online (Sandbox Code Playgroud)
我不确定如何将 Hive Row 对象类型转换为整数,以便我可以对其应用映射函数
例如, id1 是一个数据框,当我对其应用collect() 时,它会返回
[Row(_c0=12616821)]
Run Code Online (Sandbox Code Playgroud)
我需要从行对象中提取值。请告诉我是否有与此问题相关的解决方案
例如生成1G记录,其序号在1到1G之间。
这个问题在这里很常见,有几种不同的风格。在这种情况下,我设置了一个没有身份验证的 HiveServer2 ( NOSASL ),它在 Python 中工作,我在其中使用 Impyla 库进行连接。当我使用直线连接时,无法获得有效的连接。
直线结束于:
beeline> !connect jdbc:hive2://127.0.0.1:10000/default/hive
Error: Could not open client transport with JDBC Uri: jdbc:hive2://127.0.0.1:10000/default/hive: null (state=08S01,code=0)
Run Code Online (Sandbox Code Playgroud)
在 HiveServer2 日志中我有:
17/11/16 20:59:35 [HiveServer2-Handler-Pool: Thread-34]: ERROR server.TThreadPoolServer: Thrift error occurred during processing of message.
org.apache.thrift.protocol.TProtocolException: Missing version in readMessageBegin, old client?
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:228)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.hive.service.auth.TSetIpAddressProcessor.process(TSetIpAddressProcessor.java:56)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:285)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试检索特定“name2”之后的下一个“name1”。例如,“name2”中“complete2”之后的下一个“name1”是“init3”。这是我使用的查询,但它返回 null。
date_time name1 name2
2017-11-23 00:09:46 init1 complete1
2017-11-23 00:09:48 init2 complete2
2017-11-23 00:09:50 init3 complete3
select date_time,name1,name2,
lead(name1,1) over (order by date_time) as next_word
from tab1
where date_time between "2017-11-23 00:00:00" and "2017-11-23 23:59:59"
and name2 like "%complete2%";
Run Code Online (Sandbox Code Playgroud) 我需要查询下表并查看我的 Apache HIVE 集群中的信息:
每行需要包含以下内容:
表模式
表名
表说明
列名称
列数据类型
柱长
立柱精度
柱标尺
空或非空
主要关键指标
这可以很容易地从大多数 RDBMS(元数据表/视图)中查询,但我很难找到有关 HIVE 中等效元数据表/视图的大量信息。
请帮忙 :)
我在 HIVE 中有一个 AVRO 格式的表。该表中的一列(字符串数据类型)包含带有换行符的数据,因此当我选择(使用 beeline 或 pyspark)时,我会得到多行。我确实在选择中尝试了选项 REGEXP_REPLACE(col1,"\n","") ,但它仍然返回多行。
当我复制并粘贴到文本编辑器中时,col1 的值如下所示:
NY - Enjoy holidays or Enjoy leaves.
Silver 2000 plan
Silver 2000 plan CSR 1
Silver 2000 plan CSR 2
Gold 600 plan
Enjoy, holidays then leaves for ER, UC and old age only. Primary holidays not subject to Enjoy.
Run Code Online (Sandbox Code Playgroud)
这里有什么替代方案吗?
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:563)
at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:83)
... 17 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct cannot be cast to org.apache.hadoop.io.BinaryComparable
at org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doDeserialize(LazySimpleSerDe.java:166)
at org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.deserialize(AbstractEncodingAwareSerDe.java:71)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.readRow(MapOperator.java:149)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.access$200(MapOperator.java:113)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:554)
... 18 more
2019-09-19 11:50:29,860 [INFO] [TezChild] |task.TezTaskRunner|: Encounted an error while executing task: attempt_1568591126479_21189_1_01_000000_2
java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {140725, 222117, 11A2, YYYYYYNN , F, R, SeLect Advntg RX OB, N, MATERNITY , I, 0.00, 04, N, N, Y, Y, Y, N, 003, A, B, , , , , …Run Code Online (Sandbox Code Playgroud) 我有一个包含用户名(约 1 000 行)的表,称为“潜在用户”,另一个表称为“实际用户”(约 1000 万行)。所有记录都完全由 [az] 字符组成,没有空格。此外,我知道实际用户表中没有潜在用户。
我希望能够根据 Levenshtein 距离,计算 possible_users 中的每一行,actual_users 中最接近的记录是什么。例如:
| potential_users|
|----------------|
| user1 |
| kajd |
| bbbbb |
Run Code Online (Sandbox Code Playgroud)
和
| actual_users |
|--------------|
| kaj |
| bbbbbbb |
| user |
Run Code Online (Sandbox Code Playgroud)
将返回:
| potential_users | actual_users | levenshtein_distance |
|-----------------|--------------|----------------------|
| user1 | user | 1 |
| kajd | kaj | 1 |
| bbbbb | bbbbbbb | 2 |
Run Code Online (Sandbox Code Playgroud)
如果表很短,我可以创建一个交叉联接,计算潜在用户中的每条记录与实际用户中的编辑距离,然后返回具有最低值的记录。然而,在我的例子中,这将创建一个 1 000 x 10 000 000 行的中间表,这有点不切实际。
是否有更干净的方法通过创建交叉连接来执行此类操作?
我面临一个特定的问题,其中我的 JSON 结构如下:-
{A:value,
B:value,
C:Array<Struct<A1:value,B1:value, C1:Array<struct<A2:value,B2:value>>>>
}
Run Code Online (Sandbox Code Playgroud)
我希望它以以下形式爆炸:-
{
A:value,
B:value,
A1:value,
B1:value,
A2:value,
B2:value
}
Run Code Online (Sandbox Code Playgroud)
我为此使用了 pyspark 数据框,但找不到正确爆炸的方法。任何帮助表示赞赏。
Impala 如何在查询处理中实现比 Hive 更低的延迟?
我正在浏览http://impala.apache.org/overview.html,其中说明:
为了避免延迟,Impala 绕过 MapReduce,通过专门的分布式查询引擎直接访问数据,该引擎与商业并行 RDBMS 中的查询引擎非常相似。结果是性能比 Hive 快几个数量级,具体取决于查询和配置的类型。
Impala 如何在没有 MapReduce 的情况下获取数据(如在 Hive 中)?
能不能说Impala更接近HBase,应该和HBase比,而不是和Hive比?
编辑:
或者我们可以说,像经典一样,Hive 位于 MapReduce 之上并且确实需要更少的内存来工作,而 Impala 在内存中完成所有工作,因此它需要更多的内存来工作,因为数据已经被缓存在内存中并根据请求采取行动?
Hadoop技术对我来说非常混乱(Hbase,flume,oozie,scoop,zookeeper,Hive,hue,Bigtop,pig)以及现在它的黑斑羚.有人可以定义它们是如何集成的吗?(我是一个信息开发人员,对Java的知识很少)至少是数据软件的外壳!
我是HBase的新手.实际上HBase称为无模式数据存储.但是要在特定列中存储值,我们应该指定表,然后是列族,然后是列名,然后是{Actual value}.
所以我很困惑,要将值放入hbase表中,为什么我们需要指定列名.
HBase是无模式的吗?
请澄清我的疑问?提前致谢.
我个别理解每个是什么,但我很难在用例的差异上解决问题.
可以简要描述一下每个是什么,以及一个用例何时可以选择其他人的例子.
我的理解是Spark和Cassandra甚至没有可比性,但我的同事认为它们是同一物种.
作为大数据的新手,如果这是一个严格的意见/首选基础,我会提前道歉.如果有,请告诉我,我会把问题记下来.