2017-09-13 1 views
1

저는 Elastic 검색 통합을 위해 HDFS에서 SparkSQL을 통해 작업하고 있습니다. HDFS에서 csv 데이터를 읽고 탄성 검색 인덱스를 만들 수있었습니다. Elastic 검색 색인 ID를 만들려면 CSV 데이터에서 고유 한 열 중 하나를 사용하고 있습니다. 이제 나의 요구 사항은 탄성 검색 색인 ID는 2 개의 CSV 열의 조합이어야합니다. 아무도 내가 이것을 어떻게 달성 할 수 있을지 알고 있습니까? 나는 색인을 생성하기 위해 elasticsearch-spark 라이브러리를 사용하고있다. 아래는 샘플 코드입니다. 복합 키에탄성 검색을 생성하기위한 복합 키 인덱스

SparkSession sparkSession = SparkSession.builder().config(config).getOrCreate(); 
SQLContext ctx = sparkSession.sqlContext(); 
HashMap<String, String> options = new HashMap<String, String>(); 
options.put("header", "true"); 
options.put("path", "hdfs://localhost:9000/test"); 
Dataset df = ctx.read().format("com.databricks.spark.csv").options(options).load(); 
JavaEsSparkSQL.saveToEs(df, "spark/test", ImmutableMap.of("es.mapping.id", "Id")); 

답변

0

변경 ID 값은 탄성 검색에 데이터 집합을 저장합니다 일

df.registerTempTable("tmp"); 
Dataset ds= spark.sql("select concat(Id,<another composite key column>) as Id ,<rest of the columns> from tmp"); 
JavaEsSparkSQL.saveToEs(df, "spark/test", ImmutableMap.of("es.mapping.id", "Id")); 
+1

감사합니다. – Sach

+0

도와 드리겠습니다. 질문에 답을 표시하십시오. –