我有三张表格,每张数据都是2Gb。
我需要迭代第二个表并在第三个表中通过护照进行搜索,以生成最佳地址的分数(多个算法)。
如何处理这些数据并将结果保存在表格中?
注意:我正在处理镶木地板文件
更新(@cheseaux):到目前为止我做了
我有3个文件:DC.txt,EC.txt和ECK.txt
导入数据:
val DC = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "false")
.option("inferSchema", "false")
.option("mode", "DROPMALFORMED")
.option("delimiter", "|")
.load("/DC.txt")
并保存到hive上下文:
DC.select("*").write
.format("com.databricks.spark.csv")
.option("header", "false")
.option("inferSchema", "false")
.option("mode", "DROPMALFORMED")
.option("delimiter", "|")
.option("quote", " ")
.save("hdfs://localhost:8020/project/DC")
创建一个外部表:
CREATE EXTERNAL TABLE EC(
some String,
var String,
here String
)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY '\|'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:8020/project/DC'
并创建一个镶木桌子:
CREATE TABLE
EC_PARQUET(
some String,
var String,
here String
)
ROW FORMAT
SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
将所有数据插入镶木桌:
INSERT INTO EC_PARQUET SELECT * FROM EC
现在我正在尝试使用这些数据:
val hc = new org.apache.spark.sql.hive.HiveContext(sc)
val ec = hc.sql("SELECT * FROM EC_PARQUET")
尝试:
import org.apache.spark.sql.Row;
val test = ec.take(100000).map(row => {
val row1 = row.getAs[String](1)
val make = if (row1.toLowerCase == "cualquiercosa") "S" else row1
Row(row(0),make,row(3))
}).registerTempTable("teste2")
如何使用此修改列创建表?