使用scala对applist生成词向量

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types._
import org.apache.spark.ml.feature.Word2Vec
import org.apache.spark.sql.functions._
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.Row
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.sql.expressions.UserDefinedFunction // 导入 UserDefinedFunction
import org.apache.spark.sql.expressions.Window

val spark = SparkSession.builder()
  .appName("w2v0218")
  .config("spark.driver.memory", "32g")
  .config("spark.executor.memory", "28g")
  .config("spark.driver.maxResultSize", "16g")
  .config("spark.sql.shuffle.partitions", "2000")
  .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
  .config("spark.dynamicAllocation.enabled", "true")
  .getOrCreate()

// 执行SQL查询
val query = """select device,pkg_list package_list from database.table"""
println(query)
val queryDf = spark.sql(query)
queryDf.show(5)

// 训练 Word2Vec 模型
val word2Vec = new Word2Vec()
  .setVectorSize(256)
  .setMinCount(40000)
  .setWindowSize(10)
  .setMaxIter(1)
  .setNumPartitions(2000)
  .setInputCol("package_list")
  .setOutputCol("features")
val model = word2Vec.fit(queryDf)
println("fit ok")

// 转换并保存结果(修复变量名)
model.transform(queryDf)
  .select("device", "features")
  .write
  .mode("overwrite")
  .option("compression", "snappy")
  .saveAsTable("database.bx_v256_mc4000")

spark.stop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值