---
title: 生成数据集
description: "1. 修改HiBench配置文件。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_08_0034.html
sourcePath: /source/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_08_0034.html
indexId: a34241466eb922417b22131c27b886a98f3f54b13ad74b24d2a928776b37bdd288
---
# 生成数据集


#### 生成CP10M1K数据集

1. 修改HiBench配置文件。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 修改“/HiBench-HiBench-7.0/conf/workloads/ml/svd.conf”配置文件。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/svd.conf

  c. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 hibench.svd.bigdata.examples 10000000 hibench.svd.bigdata.features 1000 hibench.workload.input ${hibench.hdfs.data.dir}/CP10M1K

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 进入“HiBench-HiBench-7.0/conf”目录，修改“/HiBench-7.0/conf/hibench.conf”配置文件。
    1 2 cd /HiBench-HiBench-7.0/conf vi hibench.conf

  f. 按“i”进入编辑模式，修改数据配置如图所示。
  g. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据集。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/svd/prepare/

  c. 运行生成脚本，生成数据集CP10M1K。
    1 sh prepare.sh

  d. 查看生成结果。
    1 hadoop fs -ls /HiBench/CP10M1K

  e. 当生成过程中，出现权限报错时，对相应目录用root账户和HDFS分别进行权限更改。
3. 使用HDFS新建文件夹。
  1 hadoop fs -mkdir -p /tmp/ml/dataset

4. 打开spark-shell。
  1 spark-shell

5. 输入以下命令。
  1 :paste

6. 执行下面代码，对数据集进行处理。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 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对应目录，得到结果如下图。
  1 hadoop fs -ls /tmp/ml/dataset/CP10M1K


#### 生成CP2M5K数据集

1. 修改HiBench配置文件。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 打开“/HiBench-HiBench-7.0/conf/workloads/ml/svd.conf”配置文档。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/svd.conf

  c. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 hibench.svd.bigdata.examples 2000000 hibench.svd.bigdata.features 5000 hibench.workload.input ${hibench.hdfs.data.dir}/CP2M5K

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  f. 打开“/HiBench-7.0/conf/hibench.conf”配置文档。
    1 vi hibench.conf

  g. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 hibench.scale.profile bigdata hibench.default.map.parallelism 500 hibench.default.shuffle.parallelism 600

  h. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/svd/prepare/

  c. 运行生成脚本，生成数据集CP2M5K。
    1 sh prepare.sh

  d. 当生成过程中，出现权限报错时，对相应目录用root账户和HDFS分别进行权限更改。
3. HDFS新建文件夹。
  1 hadoop fs -mkdir -p /tmp/ml/dataset

4. 打开spark-shell。
  1 spark-shell

5. 输入以下命令。
  1 :paste

6. 执行下面代码，对数据集进行处理。
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 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对应目录，得到结果如下图。
  1 hadoop fs -ls /tmp/ml/dataset/CP2M5K


#### 生成ALS数据集

1. 设置HiBench配置文档。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 打开“/HiBench-HiBench-7.0/conf/workloads/ml/als.conf”配置文档。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/als.conf

  c. 按“i”进入编辑模式，修改数据配置如下。
  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  f. 打开“/HiBench-7.0/conf/hibench.conf”配置文档。
    1 vi hibench.conf

  g. 按“i”进入编辑模式，修改数据配置如下。
  h. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/ALS

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/als/prepare/

  c. 运行生成脚本，生成数据集ALS。
    1 sh prepare.sh

  d. 查看生成结果。
    1 hadoop fs -ls /tmp/ml/dataset/ALS

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


#### 生成D200M100数据集

1. 设置HiBench配置文档。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 打开“/HiBench-HiBench-7.0/conf/workloads/ml/kmeans.conf”配置文档。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/kmeans.conf

  c. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 4 5 6 7 8 9 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

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  f. 打开“/HiBench-HiBench-7.0/conf/hibench.conf”配置文档。
    1 vi hibench.conf

  g. 按“i”进入编辑模式，修改数据配置如下。
  h. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/kmeans_200m100_tmp

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/kmeans/prepare/

  c. 运行生成脚本，生成数据集D200M100。
    1 sh prepare.sh

3. 查看生成结果。
  1 hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100_tmp

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

4. HDFS上创建数据集存放路径。
  1 hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100

5. 移动数据集到指定路径。
  1 hdfs dfs -mv /tmp/ml/dataset/kmeans_200m100_tmp/samples/* /tmp/ml/dataset/kmeans_200m100/

6. 查看结果。
  1 hdfs dfs -ls /tmp/ml/dataset/kmeans_200m100/

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


#### 生成D10M4096数据集

1. 设置HiBench配置文档。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 打开“/HiBench-HiBench-7.0/conf/workloads/ml/lr.conf”配置文档。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/lr.conf

  c. 按“i”进入编辑模式，修改数据配置如下。将数据样本改为1000万个，将数据特性改为4096。生成4000万个样本的大规模数据集。
    1 2 hibench.lr.bigdata.examples 10000000 hibench.lr.bigdata.features 4096

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  f. 打开“/HiBench-HiBench-7.0/conf/hibench.conf”配置文档。
    1 vi hibench.conf

  g. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 hibench.scale.profile bigdata hibench.default.map.parallelism 300 hibench.default.shuffle.parallelism 300

  h. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/lr/prepare/

  c. 运行生成脚本，生成数据集D10M4096。
    1 sh prepare.sh

3. 查看生成结果。
  1 hdfs dfs -ls /HiBench/HiBench/LR/Input

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

4. 打开spark-shell。
  1 spark-shell

5. 输入以下命令。
  1 :paste

6. 执行下面代码，对数据集进行处理。
  1 2 3 4 5 6 7 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配置文档。

  a. 进入“HiBench-HiBench-7.0/conf”目录。
    1 cd /HiBench-HiBench-7.0/conf

  b. 打开“/HiBench-HiBench-7.0/conf/workloads/ml/lda.conf”配置文件。
    1 vi /HiBench-HiBench-7.0/conf/workloads/ml/lda.conf

  c. 按“i”进入编辑模式，修改数据配置如下。
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 首先进入HDFS，确定生成目录。
    1 hdfs dfs -mkdir -p /tmp/ml/dataset/

  b. 进入执行路径。
    1 cd /HiBench-HiBench-7.0/bin/workloads/ml/lda/prepare/

  c. 运行bin/workloads/ml/lda/prepare/prepare.sh生成数据集。
    1 sh prepare.sh

3. 打开spark-shell。
  1 spark-shell

4. 输入以下命令。
  1 :paste

5. 执行下面代码，将生成的数据，转换为ORC格式。
  1 2 3 4 5 6 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. 修改scala文件参数。

  a. 打开“Hibench/sparkbench/ml/src/main/scala/com/intel/sparkbench/ml/RatingDataGenerator.scala”文件。
    1 vi Hibench/sparkbench/ml/src/main/scala/com/intel/sparkbench/ml/RatingDataGenerator.scala

  b. 按“i”进入编辑模式，修改中    numPartitions
参数（如下图，注释第36、37行并添加第38行）。
    1 val numPartitions = parallel

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 生成数据。

  a. 编译sparkbench模块。
    1 mvn package

  b. 将编译好的sparkbench-common-8.0-SNAPSHOT.jar和sparkbench-ml-8.0-SNAPSHOT.jar两个JAR包放到相同文件夹中，调用RatingDataGenerator即可生成数据，例如。
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 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代表不生成隐式反馈的数据。


#### 生成BostonHousing数据集

单击获取链接(https://github.com/selva86/datasets/blob/master/BostonHousing.csv)获取相关数据集。


#### 生成Titanic数据集

单击获取链接(https://www.kaggle.com/datasets/hesh97/titanicdataset-traincsv)获取相关数据集。


#### 生成avazu数据集

单击获取链接(https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary.html#avazu)获取相关数据集。

请选择文件名后缀为-site的数据集，训练集行数/测试集行数/特征数：25,832,830/2,858,160/1,000,000


#### 生成Movielens数据集

单击获取链接(https://grouplens.org/datasets/movielens/20m/)获取相关数据集。


#### 生成Criteo40M&Criteo150M数据集

单击获取链接(https://ailab.criteo.com/download-criteo-1tb-click-logs-dataset/)获取相关数据集。


#### 生成bremenSmall数据集

单击获取链接(https://b2share.eudat.eu/records/7f0c22ba9a5a44ca83cdf4fb304ce44e)获取相关数据集。


#### 生成farm数据集

单击获取链接(https://sites.google.com/view/approxdbscan/datasets)获取相关数据集。
