안녕하세요? 현재 es에서 spark로 데이터를 읽어와 SQL 처리를 하는 기능을 적용중인데요.
아래와 같은 코드 사용시 문제가 있습니다.
# Initializing PySpark
from pyspark import SparkContext, SparkConf, SQLContext
# Spark Config
conf = SparkConf().setAppName("es_app")
sc = SparkContext(conf=conf)
# sqlContext
sqlContext = SQLContext(sc)
# ES to dataframe
df = sqlContext.read.format("org.elasticsearch.spark.sql").option("es.nodes","xxx.xxx.xxx.xxx:9200").option("es.nodes.discovery", "true").load("sample")
# make view
df.registerTempTable("sample")
# Too long
sqlContext.sql("SELECT count(*) from sample").show()
sample에 500만개 정도 document를 가지고 있는데, 저 쿼리를 날리면 결과가 나오기 까지 3~5분 정도 소요가 됩니다.
로그를 보니 모든 document를 가져온 다음 처리하는 듯 한데, 이 문제를 해결하려면 어떻게 해야하나요? 샤드 개수를 늘려보아도 한계가 있네요 ㅠㅠ