2016-09-12 19 views
5

S3 grubumda çok fazla json dosyası var ve bunları okuyabilmek ve bu dosyaları sorgulamak istiyorum. Sorun şu ki oldukça basılmışlar. Bir json dosyası sadece tek bir büyük sözlüğe sahiptir, ancak bir satırda değildir. this başlığına göre, json dosyasındaki bir sözlük Apache Spark'in bir sınırlaması olan bir satırda olmalıdır. Ben bu şekilde yapılandırılmış değil.Apache Spark'de güzel baskı json dosyalarını okuma

  1. Apache Spark (her satıra bir sözlükte gerektirdiği şemanıza göre bu dosyaları dönüştürme önlemek Can - İşte

    { 
        "dataset": [ 
         { 
          "key1": [ 
           { 
            "range": "range1", 
            "value": 0.0 
           }, 
           { 
            "range": "range2", 
            "value": 0.23 
           } 
          ] 
         }, {..}, {..} 
        ], 
        "last_refreshed_time": "2016/09/08 15:05:31" 
    } 
    

    sorularım şunlardır -

    Benim JSON şema şöyle bir dosya) ve hala okuyabiliyor musunuz?

  2. Değilse, Python'da bunu yapmanın en iyi yolu nedir? Kovadaki her gün için bir sürü dosyam var. Kova güne göre bölünmüştür.

  3. Bu dosyaları Apache Spark dışında sorgulamak için daha uygun başka bir araç var mı? AWS yığınındayım, bu yüzden Zeppelin notebook'la önerebileceğiniz başka herhangi bir aracı deneyebilirsiniz. Sen Burada sc.wholeTextFiles() kullanabilirsiniz

+0

Ben Spark aşina değilim, ama mevcut Python varsa sadece 'json' modülü kullanarak JSON dosyasına okumak ve sonra (güzel yazim olmadan geri dışarı yazma dahil istediğinizi yapabilirsiniz). – larsks

cevap

0

ilgili post olduğunu. Alternatif olarak, jsonunuzu basit bir işlev kullanarak yeniden biçimlendirebilir ve oluşturulan dosyayı yükleyebilirsiniz.

def reformat_json(input_path, output_path): 
    with open(input_path, 'r') as handle: 
     jarr = json.load(handle) 

    f = open(output_path, 'w') 
    for entry in jarr: 
     f.write(json.dumps(entry)+"\n") 
    f.close()