2016-04-06 24 views
1

kullanarak min değerini içeren satırlar dışında Timestamp ve Machine Ids içeren bir Spark Data Frame var. Her gruptan en düşük zaman damgası değerini kaldırmak istiyorum. Ben kodu aşağıdaki çalıştı:Spark kullanarak HiveContext

sqlC <- sparkRHive.init(sc) 
ts_df2<- sql(sqlC,"SELECT ts,Machine FROM sdf2 EXCEPT SELECT MIN(ts),Machine FROM sdf2 GROUP BY Machine") 

Ama aşağıdaki hata geliyor:

16/04/06 06:47:52 ERROR RBackendHandler: sql on 35 failed 
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) : 
org.apache.spark.sql.AnalysisException: missing EOF at 'SELECT' near 'EXCEPT'; line 1 pos 35 

sorunu nedir? Eğer HiveContext EXCEPT anahtar sözcüğünü desteklemiyorsa, HiveContext'de aynı şeyi yapmanın yolu nedir?

cevap

1

Spark için programlama kılavuzu 1.6.1 gösterileri desteklenen ve desteklenmeyen kovan ya kategoride HARİÇ Spark 1.6.1 http://spark.apache.org/docs/latest/sql-programming-guide.html#supported-hive-features

görmüyorum içinde bulunmaktadır. Başka bir yerde, Hive QL'nin HARİÇ desteklemediğini ya da en azından o zamanda yapmadığını gördüm. Hive QL Except clause

Belki de dakikaların bir tablosunu deneyin ve daha sonra bu yanıtta olduğu gibi sol dış birleştirme yapın?

SELECT ts, Machine FROM ts mins LEFT OUTER JOIN ts mins ON (ts.id=mins.id) WHERE mins.id IS NULL; 

Ayrıca, bence gerçi sen dakika DataFrame ilk

exceptDF <- except(df, df2) 
+0

sayesinde bir ton oluşturmak gerekir) (hariç sparkR yerleşik işlevini kullanabilirsiniz !! – ps30

İlgili konular