鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

生成数据集

生成CP10M1K数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改/HiBench-HiBench-7.0/conf/workloads/ml/svd.conf配置文档。
      vim /HiBench-HiBench-7.0/conf/workloads/ml/svd.conf

      修改数据配置如下:

      hibench.svd.bigdata.examples            10000000
      hibench.svd.bigdata.features            1000
      hibench.workload.input                  ${hibench.hdfs.data.dir}/CP10M1K
    3. 进入“HiBench-HiBench-7.0/conf”目录,修改/HiBench-7.0/conf/hibench.conf配置文档,修改数据配置如图所示。
      cd /HiBench-HiBench-7.0/conf
      vim hibench.conf

  2. 生成数据集。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/svd/prepare/
      1. 运行生成脚本,生成数据集CP10M1K
        sh prepare.sh
      2. 查看生成结果。
        hadoop fs -ls /HiBench/CP10M1K
      3. 当生成过程中,出现权限报错时,对相应目录用root账户和HDFS分别进行权限更改。
  3. HDFS新建文件夹。
    hadoop fs -mkdir -p /tmp/ml/dataset
  4. 打开spark-shell。
    spark-shell
  5. 输入以下命令(注意冒号也是命令)。
    :paste
  6. 执行下面代码,对数据集进行处理。
    import org.apache.spark.internal.Logging
    import org.apache.spark.ml.linalg.SQLDataTypes.VectorType
    import org.apache.spark.ml.linalg.{Matrix, Vectors}
    import org.apache.spark.mllib.linalg.DenseVector
    import org.apache.spark.sql.{Row, SparkSession}
    import org.apache.spark.sql.types.{StructField, StructType}
    import org.apache.spark.storage.StorageLevel
    val dataPath = "/HiBench/CP10M1K"
    val outputPath = "/tmp/ml/dataset/CP10M1K"
    spark
    .sparkContext
    .objectFile[DenseVector](dataPath)
    .map(row => Vectors.dense(row.values).toArray.map{u=>f"$u%.2f"}.mkString(","))
    .saveAsTextFile(outputPath)
  7. 检查HDFS对应目录,得到结果如下图。
    hadoop fs -ls /tmp/ml/dataset/CP10M1K

生成CP2M5K数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改/HiBench-HiBench-7.0/conf/workloads/ml/svd.conf配置文档。
      vim /HiBench-HiBench-7.0/conf/workloads/ml/svd.conf

      修改数据配置如下:

      hibench.svd.bigdata.examples            2000000
      hibench.svd.bigdata.features            5000
      hibench.workload.input                  ${hibench.hdfs.data.dir}/CP2M5K
    3. 进入“HiBench-HiBench-7.0/conf”目录,修改/HiBench-7.0/conf/hibench.conf配置文档。
      cd /HiBench-HiBench-7.0/conf
      vim hibench.conf

      修改数据配置如下。

      hibench.scale.profile                 bigdata
      hibench.default.map.parallelism       500
      hibench.default.shuffle.parallelism   600

  2. 生成数据。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/svd/prepare/
      1. 运行生成脚本,生成数据集CP2M5K
        sh prepare.sh
      1. 当生成过程中,出现权限报错时,对相应目录用root账户和HDFS分别进行权限更改。
  3. HDFS新建文件夹。
    hadoop fs -mkdir -p /tmp/ml/dataset
  4. 打开spark-shell。
    spark-shell
  5. 输入以下命令(注意冒号也是命令)。
    :paste
  6. 执行下面代码,对数据集进行处理。
    import org.apache.spark.internal.Logging
    import org.apache.spark.ml.linalg.SQLDataTypes.VectorType
    import org.apache.spark.ml.linalg.{Matrix, Vectors}
    import org.apache.spark.mllib.linalg.DenseVector
    import org.apache.spark.sql.{Row, SparkSession}
    import org.apache.spark.sql.types.{StructField, StructType}
    import org.apache.spark.storage.StorageLevel
    val dataPath = "/HiBench/CP2M5K"
    val outputPath = "/tmp/ml/dataset/CP2M5K"
    spark
    .sparkContext
    .objectFile[DenseVector](dataPath)
    .map(row => Vectors.dense(row.values).toArray.map{u=>f"$u%.2f"}.mkString(","))
    .saveAsTextFile(outputPath)
  7. 检查HDFS对应目录,得到结果如下图。
    hadoop fs -ls /tmp/ml/dataset/CP2M5K

生成ALS数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改/HiBench-HiBench-7.0/conf/workloads/ml/als.conf配置文档,修改数据配置如下。
      vim /HiBench-HiBench-7.0/conf/workloads/ml/als.conf

    3. 进入“HiBench-HiBench-7.0/conf”目录,修改/HiBench-7.0/conf/hibench.conf配置文档。
      cd /HiBench-HiBench-7.0/conf
      vim hibench.conf

      修改数据配置如下。

  2. 生成数据。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/ALS
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/als/prepare/
    3. 运行生成脚本,生成数据集ALS。
      sh prepare.sh
    4. 查看生成结果。
      hadoop fs -ls /tmp/ml/dataset/ALS

      当生成过程中,出现权限报错时,对相应目录用root账户和hdfs分别进行权限更改。

生成D200M100数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改/HiBench-HiBench-7.0/conf/workloads/ml/kmeans.conf配置文档。
      vim /HiBench-HiBench-7.0/conf/workloads/ml/kmeans.conf

      修改数据配置如下。

      hibench.kmeans.gigantic.num_of_clusters		5
      hibench.kmeans.gigantic.dimensions		100
      hibench.kmeans.gigantic.num_of_samples		200000000
      hibench.kmeans.gigantic.samples_per_inputfile	40000000
      hibench.kmeans.gigantic.max_iteration		5
      hibench.kmeans.gigantic.k			10
      hibench.kmeans.gigantic.convergedist		0.5
      
       hibench.workload.input                         hdfs://server1:8020/tmp/ml/dataset/kmeans_200m20_tmp

    3. 进入“HiBench-HiBench-7.0/conf”目录,修改/HiBench-HiBench-7.0/conf/hibench.conf配置文档,修改数据配置如下。
      cd /HiBench-HiBench-7.0/conf
      vim hibench.conf

  2. 生成数据。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/kmeans_200m100_tmp
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/kmeans/prepare/
    3. 运行生成脚本,生成数据集D200M100。
      sh prepare.sh
  3. 查看生成结果。
    hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100_tmp

    当生成过程中,出现权限报错时,对相应目录用root账户和HDFS分别进行权限更改。

  4. HDFS上创建数据集存放路径。
    hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100
  5. 移动数据集到指定路径。
    hdfs dfs -mv /tmp/ml/dataset/kmeans_200m100_tmp/samples/* /tmp/ml/dataset/kmeans_200m100/
  6. 查看结果。
    hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100/

  7. 清理冗余目录。
    hdfs dfs -rm -r /tmp/ml/dataset/kmeans_200m100_tmp

生成D10M4096数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改/HiBench-HiBench-7.0/conf/workloads/ml/lr.conf配置文档。
      vim /HiBench-HiBench-7.0/conf/workloads/ml/lr.conf

      修改数据配置如下。将数据样本改为1000万个,将数据特性改为4096。生成4000万个样本的大规模数据集。

      hibench.lr.bigdata.examples  10000000
      hibench.lr.bigdata.features  4096

    3. 进入“HiBench-HiBench-7.0/conf”目录,修改/HiBench-HiBench-7.0/conf/hibench.conf配置文档。
      cd /HiBench-HiBench-7.0/conf
      vim hibench.conf

      修改数据配置如下。

      hibench.scale.profile                 bigdata
      hibench.default.map.parallelism       300
      hibench.default.shuffle.parallelism   300

  2. 生成数据。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/lr/prepare/
    3. 运行生成脚本,生成数据集D10M4096。
      sh prepare.sh
  3. 查看生成结果。
    hdfs dfs -ls /HiBench/HiBench/LR/Input

    当生成过程中,出现权限报错时,对相应目录用root账户和HDFS分别进行权限更改。

  4. 打开spark-shell。
    spark-shell
  5. 输入以下命令(注意冒号也是命令)。
    :paste
  6. 执行下面代码,对数据集进行处理。
    import org.apache.spark.rdd.RDD
    import org.apache.spark.mllib.regression.LabeledPoint
    val data: RDD[LabeledPoint] = sc.objectFile("/HiBench/HiBench/LR/Input/10m4096")
    val i = data.map{t=>t.label.toString+","+t.features.toArray.mkString(" ")}
    val splits = i.randomSplit(Array(0.6, 0.4), seed = 11L)
    splits(0).saveAsTextFile("/HiBench/HiBench/LR/Output/10m4096_train")
    splits(1).saveAsTextFile("/HiBench/HiBench/LR/Output/10m4096_test")

生成HiBench_10M_200M数据集

  1. 设置HiBench配置文档。
    1. 进入“HiBench-HiBench-7.0/conf”目录。
      cd /HiBench-HiBench-7.0/conf
    2. 修改配置文件/HiBench-HiBench-7.0/conf/workloads/ml/lda.conf,修改数据配置如下。
      hibench.lda.bigdata.num_of_documents              10000000
      hibench.lda.bigdata.num_of_vocabulary             200007152
      hibench.lda.bigdata.num_of_topics                 100
      hibench.lda.bigdata.doc_len_min                   500
      hibench.lda.bigdata.doc_len_max                   10000
      hibench.lda.bigdata.maxresultsize                 "6g"
      hibench.lda.num_of_documents                      ${hibench.lda.${hibench.scale.profile}.num_of_documents}
      hibench.lda.num_of_vocabulary                     ${hibench.lda.${hibench.scale.profile}.num_of_vocabulary}
      hibench.lda.num_of_topics                         ${hibench.lda.${hibench.scale.profile}.num_of_topics}
      hibench.lda.doc_len_min                           ${hibench.lda.${hibench.scale.profile}.doc_len_min}
      hibench.lda.doc_len_max                           ${hibench.lda.${hibench.scale.profile}.doc_len_max}
      hibench.lda.maxresultsize                         ${hibench.lda.${hibench.scale.profile}.maxresultsize}
      hibench.lda.partitions                            ${hibench.default.map.parallelism}
      hibench.lda.optimizer                             "online"
      hibench.lda.num_iterations                        10
  2. 生成数据。
    1. 首先进入HDFS,确定生成目录。
      hdfs dfs -mkdir -p /tmp/ml/dataset/
    2. 进入执行路径。
      cd /HiBench-HiBench-7.0/bin/workloads/ml/lda/prepare/
    3. 运行bin/workloads/ml/lda/prepare/prepare.sh生成数据集。
      sh prepare.sh
  3. 打开spark-shell。
    spark-shell
  4. 输入以下命令(注意冒号也是命令)。
    :paste
  5. 执行下面代码,将生成的数据,转换为ORC格式。
    import org.apache.spark.mllib.linalg.{Vector => OldVector, Vectors => OldVectors} 
    import org.apache.spark.ml.linalg.{Vector, Vectors}
    case class DocSchema(id: Long, tf: Vector)
    val data: RDD[(Long, OldVector)] = sc.objectFile(dataPath)
    val df = spark.createDataFrame(data.map {doc => DocSchema(doc._1, doc._2.asML)})
    df.repartition(200).write.mode("overwrite").format("orc").save(outputPath)

生成HibenchRating3wx3w数据集

  1. 修改“Hibench/sparkbench/ml/src/main/scala/com/intel/sparkbench/ml/RatingDataGenerator.scala”numPartitions参数(如下图,注释第36、37行并添加第38行)。
    val numPartitions = parallel

  2. 生成数据。
    1. 编译sparkbench模块。
      mvn package
    2. 将编译好的sparkbench-common-8.0-SNAPSHOT.jar和sparkbench-ml-8.0-SNAPSHOT.jar两个JAR包放到相同文件夹中,调用RatingDataGenerator即可生成数据,例如。
      spark-submit \
      --class com.intel.hibench.sparkbench.ml.RatingDataGenerator \
      --jars sparkbench-common-8.0-SNAPSHOT.jar \
      --conf "spark.executor.instances=71" \
      --conf "spark.executor.cores=4" \
      --conf "spark.executor.memory=12g" \
      --conf "spark.executor.memoryOverhead=2g" \
      --conf "spark.default.parallelism=284" \
      --master yarn \
      --deploy-mode client \
      --driver-cores 36 \
      --driver-memory 50g \
      ./sparkbench-ml-8.0-SNAPSHOT.jar \
      /tmp/hibench/HibenchRating3wx3w 24000 6000 900000 false

      配置参数含义:

      • /tmp/hibench/HibenchRating3wx3w代表生成数据的存储位置。
      • 24000代表user数。
      • 6000代表product数。
      • 900000代表rating数。
      • false代表不生成隐式反馈的数据。