- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试在 Hive 中使用 ACID 事务,但在使用 Spark 添加数据时遇到问题。
首先,我使用以下语句创建了一个表:
CREATE TABLE testdb.test(id string, col1 string)
CLUSTERED BY (id) INTO 4 BUCKETS
STORED AS ORC TBLPROPERTIES('transactional'='true');
然后我用这些查询添加了数据:
INSERT INTO testdb.test VALUES("1", "A");
INSERT INTO testdb.test VALUES("2", "B");
INSERT INTO testdb.test VALUES("3", "C");
而且我已经能够使用此查询删除行:
DELETE FROM testdb.test WHERE id="1";
一切正常,但当我尝试删除使用 Spark 添加的行时出现问题。
我在 Spark (iPython) 中做了什么:
hc = HiveContext(sc)
data = sc.parallelize([["1", "A"], ["2", "B"], ["3", "C"]])
data_df = hc.createDataFrame(data)
data_df.registerTempTable(data_df)
hc.sql("INSERT INTO testdb.test SELECT * FROM data_df");
然后,当我回到 Hive 时,我可以在这个“测试”表上运行 SELECT 查询。但是,当我尝试运行与以前完全相同的 DELETE 查询时,出现以下错误(它发生在 reduce 阶段之后):
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":{"transactionid":0,"bucketid":-1,"rowid":0}},"value":null}
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:265)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:444)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":{"transactionid":0,"bucketid":-1,"rowid":0}},"value":null}
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:253)
... 7 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:723)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:244)
... 7 more
我不知道这是从哪里来的,这就是我寻找想法的原因。
我正在使用 Cloudera Quickstart VM (5.4.2)。 hive 版本:1.1.0星火版本:1.3.0
下面是 Hive DELETE 命令的完整输出:
hive> delete from testdb.test where id="1";
Query ID = cloudera_20160914090303_795e40b7-ab6a-45b0-8391-6d41d1cfe7bd
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 4
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
Starting Job = job_1473858545651_0036, Tracking URL =http://quickstart.cloudera:8088/proxy/application_1473858545651_0036/
Kill Command = /usr/lib/hadoop/bin/hadoop job -kill job_1473858545651_0036
Hadoop job information for Stage-1: number of mappers: 2; number of reducers: 4
2016-09-14 09:03:55,571 Stage-1 map = 0%, reduce = 0%
2016-09-14 09:04:14,898 Stage-1 map = 50%, reduce = 0%, Cumulative CPU 1.66 sec
2016-09-14 09:04:15,944 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 3.33 sec
2016-09-14 09:04:44,101 Stage-1 map = 100%, reduce = 17%, Cumulative CPU 4.21 sec
2016-09-14 09:04:46,523 Stage-1 map = 100%, reduce = 25%, Cumulative CPU 4.79 sec
2016-09-14 09:04:47,673 Stage-1 map = 100%, reduce = 42%, Cumulative CPU 5.8 sec
2016-09-14 09:04:50,041 Stage-1 map = 100%, reduce = 75%, Cumulative CPU 7.45 sec
2016-09-14 09:05:18,486 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 7.69 sec
MapReduce Total cumulative CPU time: 7 seconds 690 msec
Ended Job = job_1473858545651_0036 with errors
Error during job, obtaining debugging information...
Job Tracking URL: http://quickstart.cloudera:8088/proxy/application_1473858545651_0036/
Examining task ID: task_1473858545651_0036_m_000000 (and more) from job job_1473858545651_0036
Task with the most failures(4):
-----
Task ID:
task_1473858545651_0036_r_000001
URL:
http://0.0.0.0:8088/taskdetails.jsp?jobid=job_1473858545651_0036&tipid=task_1473858545651_0036_r_000001
-----
Diagnostic Messages for this Task:
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":{"transactionid":0,"bucketid":-1,"rowid":0}},"value":null}
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:265)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:444)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":{"transactionid":0,"bucketid":-1,"rowid":0}},"value":null}
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:253)
... 7 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:723)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:244)
... 7 more
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: Map: 2 Reduce: 4 Cumulative CPU: 7.69 sec HDFS Read: 21558 HDFS Write: 114 FAIL
Total MapReduce CPU Time Spent: 7 seconds 690 msec
谢谢!
最佳答案
使用 Spark HiveAcid 数据源 - http://github.com/qubole/spark-acid
val df = spark.read.format("HiveAcid").option("table", "testdb.test").load()
df.collect()
Spark 需要与 HMS 3.1.1 一起运行,以便底层数据源可以获得必要的锁等。
关于hadoop - 从 Spark 添加的数据的 ACID 事务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39495912/
假设我使用的是标准 SQL 引擎(例如 Postgres、MySQL...)。 如果我没有明确说“开始交易”和“结束交易”进行查询时 (如“插入学生......”), 会“安全”吗? 我会失去 RDB
我正在开始一个项目的研究,该项目需要在其数据库上提供ACID语义。 由于数据的性质,它不适合存储在常见的现成系统(关系或键值)中。 关于如何实现必须提供ACID语义的系统,有哪些好的资源? 我典型的G
DBMS 的原子性和隔离性之间的区别有些模糊,所以我想知道两者之间的明显区别? 原子性和隔离性在经典数据库事务中通过使用提交协议(protocol)得到保证。该协议(protocol)用于将临时存储变
抱歉这个无知的问题,但是什么样的应用程序不需要符合 ACID 的数据库服务器?我有 SQL Server 背景,其中 ACID 一直“存在”,现在研究其他 DBMS 让我思考。我能想到的大多数应用程序
ACID和数据库事务有什么关系? ACID 是给数据库事务还是一回事? 谁能启发这个话题。 最佳答案 ACID是您希望在修改数据库时应用的一组属性。 原子性 一致性 隔离 耐用性 事务是一组相关的更改
过去几个月我一直在研究微服务架构应用程序,我仍在努力适应分布式特性。我多次注意到一种模式,但我不确定处理它的首选方式是什么。 假设我们有服务 A、服务 B 和服务 C。服务 A 公开了一个 API,其
我经常读到,CQRS 的一大优势是在读取端拥有非规范化数据。例如。可以存储冗余的数据字段和子对象以避免连接。但这也意味着单个事件可能会导致读取端发生多个更新操作,因为实体的状态更改必须反射(refle
我经常读到,CQRS 的一大优势是在读取端拥有非规范化数据。例如。可以存储冗余的数据字段和子对象以避免连接。但这也意味着单个事件可能会导致读取端发生多个更新操作,因为实体的状态更改必须反射(refle
任何人都知道提供对一致性保证的精细控制的消息总线实现? Full ACID 太慢,没有 ACID 太错误。 我们目前正在使用 Rhino ESB 包装 MSMQ 进行消息传递。在分布式事务中使用持久的
我有一个多线程 java 应用程序,它在 MySQL 数据库上执行大量并行 CRUD 操作。正如MySQL手册中所读到的,InnoDB表结构应该确保事务按照ACID原则执行。但我仍然遇到问题,因为有时
我的交易应用程序是这样工作的: try { $db->begin(); increaseNumber(); $db->commit(); } catch(Exceptio
http://imgur.com/IZgvl 大家好,我一直在从 Wiley 的 MySQL Administrator's Bible 学习 MySQL(完全没有使用 PHP 的经验)。如果我提出的
背景: 我通过串行连接从 arduino 获取温度 float 。我需要能够每 30 秒缓存一次此温度数据,以便其他应用程序(例如网络、恒温器 Controller )访问并且不会使串行连接过载。 目
我正在查看有关事务的 ACID 属性,并在不同站点上遇到了以下声明ACID 是事务保证的四个属性的首字母缩写:原子性、一致性、隔离性和持久性。 **我的问题专门针对这个短语。 guaranteed b
我在 hadoop 集群上工作,hortonworks 2.4 发行版。我想对 Hive 表进行 ACID 操作。这是我的声明: CREATE TABLE myAcidTable (..) CLUST
我试图了解 ACID 事务,但我对持久性一无所知。 据我所知,持久性可确保保存所有已完成的交易,即使发生某种技术故障。即使发生某种技术故障也能获救意味着什么。例如,如果我的服务器在事务期间崩溃,在将数
我如何为我的数据库实现 ACID 属性 -A-原子性,C-一致性,I-隔离性,D-持久性。正在使用的数据库系统 - MySql。 最佳答案 ACID 不是您可以实现的模型,而是数据库服务器必须遵守的一
我是 Aerospike 的新手。 我想知道在所有可能的超时情况下,如该链接所述: https://discuss.aerospike.com/t/understanding-timeout-and-
具体来说,是否存在数据丢失的风险?我正在考虑运行一个密集的事务处理系统,在这个系统中,不丢失任何东西是至关重要的。是否有 NoSQL 用于银行交易处理等任务关键型应用程序的示例? 最佳答案 坦率地说,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!