6
Hintergrund: -Nicht in der Lage führen zu holen aus hive Transaktion freigegeben Tabelle durch Funken SQL
- Ich bin mit HDP mit spark1.6.0 und hive 1.2.1
Schritte folgen : -
erstellen hive Tabelle: -
hive>
CREATE TABLE orctest(PROD_ID bigint, CUST_ID bigint, TIME_ID timestamp, CHANNEL_ID bigint, PROMO_ID bigint, QUANTITY_SOLD decimal(10,0), AMOUNT_SOLD decimal(10,0)) CLUSTERED BY (PROD_ID) INTO 32 BUCKETS STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY", "transactional"="true");
Insert Datensätze in orctest
hive>
insert into orctest values(1, 1, '2016-08-02 21:36:54.000000000', 1, 1, 10, 10000);
Versuchen Sie, die orctest Tabelle von Funken Schale
scala>
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
val s = hiveContext.table("orctest")*
Ausnahme ausgelöst zuzugreifen: -
16/08/02 22:06:54 INFO OrcRelation: Listing hdfs://hadoop03:8020/apps/hive/warehouse/orctest on driver
16/08/02 22:06:54
INFO OrcRelation: Listing hdfs://hadoop03:8020/apps/hive/warehouse/orctest/delta_0000005_0000005 on driver
**java.lang.AssertionError: assertion failed**
at scala.Predef$.assert(Predef.scala:165)
at org.apache.spark.sql.execution.datasources.LogicalRelation$$anonfun$1.apply(LogicalRelation.scala:39)
at org.apache.spark.sql.execution.datasources.LogicalRelation$$anonfun$1.apply(LogicalRelation.scala:38)
at scala.Option.map(Option.scala:145)
at org.apache.spark.sql.execution.datasources.LogicalRelation.<init>(LogicalRelation.scala:38)
at org.apache.spark.sql.execution.datasources.LogicalRelation.copy(LogicalRelation.scala:31)
at org.apache.spark.sql.hive.HiveMetastoreCatalog.org$apache$spark$sql$hive$HiveMetastoreCatalog$$convertToOrcRelation(HiveMetastoreCatalog.scala:588)
Jede Hilfe wird wirklich geschätzt.
Werfen Sie einen Blick http://stackoverflow.com/questions/27171702/error-in-scala-compiler-java-lang-assertionerror-assertion-failed-even-when-p – BruceWayne
Danke Krishna für deinen Kommentar. Das habe ich aber nicht mit einem Scala-Projekt probiert, das habe ich direkt in Spark-Shell probiert. Meine Gedanken: - Wenn Sie eine Hive-Tabelle mit transnationalen Eigenschaft als True erstellen, dann können Sie nicht auf den Inhalt der Tabelle obwohl Funke zugreifen. (Bitte korrigieren Sie mich, wenn ich falsch lag) PS: Ich benutze HDP (Spark 1.6.0 und hive 1.2.1) –
Ich bin auch mit einem ähnlichen Problem konfrontiert. Ich kann eine transaktionsfähige Tabelle nicht in einen Spark-Datenrahmen laden. Haben Sie eine Problemumgehung für dieses Problem gefunden? Ich habe versucht, Hive-Transaktionseigenschaften mit sqlContext.setConf() vor dem Laden zu versuchen. Ich versuchte auch, eine Ansicht auf der Quelltransaktionstabelle zu verursachen und die Ansicht von der Zündung zu schlagen, aber ohne Erfolg –