2016-03-31 7 views
-1

İhtiyacımı olabildiğince iyi tanımlamaya çalışacağım. Ama hala belirsiz olup olmadığını bana sormaya çekinmeyin.Spark Stream kaynağımı tasarlarken bazı tavsiyelerde bulunabilir misiniz?

ortamı I (gelecekte daha olacaktır) 5 düğümleri vardır. Her biri 5 dakikada bir büyük bir CSV dosyası (yaklaşık 1 ila 2 GB) oluşturur. Bu CSV dosyalarını beş dakika içinde işlemek için apache kıvılcım akımını kullanmalıyım. Yani bu 5 dosya benim giriş DStream kaynağım. Ben

yapmayı planladıklarını ne

aşağıda gibi textFileStream kullanmayı planlıyor:

ssc.textFileStream(dataDirectory) 

Her 5 dakikada ben HDF'ler bir dizinde olanlar CSV koyacağız. Daha sonra inputDStream oluşturmak için yukarıdaki işlevi kullanın.

yukarıdaki şekilde sorunu

textFileStream bir tam dosya yerine 5 dosyalar gerekir. Ben HDF'ler dosyaları birleştirmek için nasıl bilmiyorum

Soru

  1. nasıl piton tarafından HDF'ler dosyaları birleştirmek için bana söyleyebilir misiniz?
  2. Yolumdan daha iyi bir öneriniz var mı? Ayrıca beni

cevap

0

Hep joker karakterini kullanarak bir dizindeki dosyaları okuyabilir tavsiye ediniz. Bu bir problem olmamalı. Bu, herhangi bir zamanda, DStream'in RDD'sinin, belirtilen zamanda tüm dosyaların birleştirilmiş sonucu anlamına gelir.

Bildiğim kadarıyla yaklaşım giderse, senin en basit ve çalışır.

Not: Eğer dikkatli olması gereken tek şey CSV bölünmezlik dosyalarının kendilerini olduğunu. Dosyalarınız değil copy

Teşekkür mv olarak Manas

+0

Teşekkür @Manas (Gelen dosya için izliyor) klasörüne gitmek gerekir. Fakat DStream'i inşa etmek için. TextFileStream API'sini kullanmam gerekiyor. Ve bu API bir dizini parametre olarak kabul ediyor. Yani bir kod örneği verebilir misiniz lütfen? –

+0

Evet, 'textFileStream' bir dizini parametre olarak alır. Herhangi bir noktada bu dizine gelen dosyalar, herhangi bir zamanda bir RDD'nin parçası olabilir. Şu anda benimle textFileStream örneğim yok. Fakat onu aramaya devam edip onu bulduğumda yayınlayacağım. – Manas

+0

Aslında DStream'in bir dizi RDD tarafından yapıldığını biliyoruz. Bu yüzden, her 5 dakikada bir wild card ile bir dizindeki dosyaları okuyabilir, ardından bu RDD ile DStream'i kurabiliriz. Ancak, bu RDD ile DStream oluşturmanın uygun bir yolunu bilmiyorum. Herhangi bir fikrin var mı? –