2017-09-13 66 views
1

我正在致力於通過SparkSQL進行HDFS彈性搜索集成。我可以從HDFS讀取csv數據並創建彈性搜索索引。要創建彈性搜索索引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

樂於幫助。馬克問題回答。 –