2016-04-06 19 views
2

Yerel modda çalışan pyspark (1.6.1) kullanıyorum. Csv dosyasından bir veri çerçevem ​​var ve dense_rank() sütununu eklemem gerekiyor. sqlContext'in pencere işlevini desteklemediğini, ancak HiveContext'in yaptıklarını anladım.hive context pyspark içindeki temp tablosunu tanımıyor - AnalysisException: 'Tablo bulunamadı'

hiveContext = HiveContext(sc) 
df.registerTempTable("visits") 
visit_number = hiveContext.sql("select store_number, " 
           "dense_rank() over(partition by store_number order by visit_date) visit_number " 
           "from visits") 

Şu hatayı alıyorum: AnalysisException: u'Table bulunamadı: ziyaretler; uyarıdan sonra

: ObjectStore WARN: Önceki soruları okuduktan sonra NoSuchObjectException

dönen, veritabanı varsayılan alınamadı, ben Konfigürasyon ConnectionURL değiştirmeye çalıştık/hive_defaults.xml kovanı tam yeri olmaya dizini, hiçbir başarı ile.

Bu konudaki herkes?

Teşekkürler!

+1

** SOLVED ** görünüşte, tek yapmam gereken, oluşturduğum hiveContext'i silmek ve sqlContext'i SQLContext'ten HiveContext'e geçirmek. Aynı python komut dosyasında her ikisi de (sqlContext ve hiveContext) oluşturma çalışmadı. Soru kendini tekrar eder ve çözümün hiçbir yerinde görmedim. Umarım birisine yardım eder. – user3318421

cevap

0

Eğer

MyDataFrame <- read.df(sqlContext, CsvPath, source = "somthing.csv", header = "true") 

ve bundan sonra registerTempTable

önce DataFrame oluşturmalısınız:

registerTempTable(MyDataFrame, "visits") 
+0

df zaten bir csv dosyasından gelen bir veri çerçevesidir. df = sqlContext.read.load ('df.csv', format = 'com.databricks.spark.csv', başlık = 'true', InferSchema 'gerçek' =) – user3318421

+0

ama göstermedi DF ... –

0

Sonuç: Silme SqlContext ve tek HiveContext ile çalışan, her şey gayet iyi çalışıyor.

+0

tanımı SQLContext veri toplamaktır, HiveContext için clase görünümünde olduğu gibi –