全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
推荐引擎

数据上传到MaxCompute(原ODPS)

更新时间:2017-06-07 13:26:11

大数据计算服务MaxCompute(原ODPS)用于在推荐引擎中对大批量离线数据进行计算和存储。开通ODPS和详细操作请点击大数据平台帮助指南,购买链接请点击开通大数据计算服务(原ODPS)

① 在MaxCompute(原ODPS)中创建Project项目

您需要先创建MaxCompute的项目空间(Project),该项目空间用于在推荐引擎中进行离线数据计算,创建方法请参考创建项目空间

创建完项目空间后,请记录下项目名称、Access Key ID和SECRET,后续在配置推荐引擎时会使用。

如果想了解数据开发(DATA IDE)的更多功能,请点击数据开发概述,您可以通过数据开发的控制台管理MaxCompute,进行数据ETL等操作。

② 将示例数据导入到MaxCompute的数据表中

A场景:数据在本地

本示例中,我们使用MaxCompute dship命令将本地数据导入到MaxCompute的数据表中。

上传工具:dship (MaxCompute新版推荐使用 MaxCompute Tunnel命令,您也可以参考TUNNEL命令手册使用TUNNEL来完成数据上传)

  1. create table movielens_1m_movies (
  2. movie_id string,
  3. title string,
  4. genres string
  5. );
  6. dship u D:\work\Dataset\MovieLens\ml-1m\movies.dat alidata_rp.movielens_1m_movies -h false -fd :: -rd \n
  7. create table movielens_1m_users (
  8. user_id string,
  9. gender string,
  10. age bigint,
  11. occupation string,
  12. zipcode string
  13. );
  14. dship u D:\work\Dataset\MovieLens\ml-1m\users.dat alidata_rp.movielens_1m_users -h false -fd :: -rd \n
  15. create table movielens_1m_ratings (
  16. user_id string,
  17. movie_id string,
  18. rate double,
  19. ts bigint
  20. );
  21. dship u D:\work\Dataset\MovieLens\ml-1m\ratings.dat alidata_rp.movielens_1m_ratings -h false -fd :: -rd \n
B场景:数据在RDS中
  • 先看RDS中的数据字段,然后在MaxCompute中创建一个一模一样字段的表,然后在大数据开发DataIDE中创建一个同步任务,源数据表设置成RDS的表,目标表设置成MaxCompute的表。
  • 等数据同步到MaxCompute后,再在DataIDE中加工数据,加工成推荐要求的数据
其他场景

当您的数据保存在其他数据源时,您可以参考云上数据集成方案

③ 在MaxCompute中创建推荐引擎需要的数据表

数据规范参照数据格式规范

  1. create table aliyun_re_demo_ml1m_user_meta (
  2. user_id string,
  3. tags string
  4. ) partitioned by (ds string);
  5. create table aliyun_re_demo_ml1m_user_meta_config (
  6. config_name string,
  7. config_value string
  8. ) partitioned by (ds string);
  9. create table aliyun_re_demo_ml1m_item_meta (
  10. item_id string,
  11. category string,
  12. keywords string,
  13. description string,
  14. properties string,
  15. bizinfo string
  16. ) partitioned by (ds string);
  17. create table aliyun_re_demo_ml1m_item_meta_config (
  18. config_name string,
  19. config_value string
  20. ) partitioned by (ds string);
  21. create table aliyun_re_demo_ml1m_user_behavior (
  22. user_id string,
  23. item_id string,
  24. bhv_type string,
  25. bhv_amt double,
  26. bhv_cnt double,
  27. bhv_datetime datetime,
  28. content string,
  29. media_type string,
  30. pos_type string,
  31. position string,
  32. env string,
  33. trace_id string
  34. ) partitioned by (ds string);
  35. create table aliyun_re_demo_ml1m_rec_item_info (
  36. item_id string,
  37. item_info string
  38. ) partitioned by (ds string);

④ 将示例数据导入到步骤③创建的数据表

注意:用户表和物品表需要在DS分区中导入全量,行为表在DS分区中导入每天的增量即可。

  1. -------------------------------------------------------------
  2. insert overwrite table aliyun_re_demo_ml1m_user_meta partition (ds='recent')
  3. select
  4. user_id,
  5. concat('age\003', age, '\002gender\003', gender, '\002occupation\003', occupation) as tags
  6. from alidata_rp.movielens_1m_users
  7. ;
  8. insert overwrite table aliyun_re_demo_ml1m_user_meta_config partition (ds='recent')
  9. select *
  10. from (
  11. select 'age', 'sv_enum' from dual
  12. union all
  13. select 'gender', 'sv_enum' from dual
  14. union all
  15. select 'occupation', 'sv_enum' from dual
  16. ) t
  17. ;
  18. -------------------------------------------------------------
  19. insert overwrite table aliyun_re_demo_ml1m_item_meta partition (ds='recent')
  20. select
  21. movie_id as item_id,
  22. t2.category as category,
  23. REGEXP_REPLACE(t1.genres, '\\|', '\002') as keywords,
  24. title as description,
  25. concat('genres\003', REGEXP_REPLACE(t1.genres, '\\|', '\004')) as properties,
  26. null
  27. from alidata_rp.movielens_1m_movies t1
  28. join (
  29. select distinct genres, category
  30. from (
  31. select genres, DENSE_RANK() over(partition by 1 order by genres) as category
  32. from alidata_rp.movielens_1m_movies
  33. ) t
  34. ) t2
  35. on t1.genres = t2.genres
  36. ;
  37. insert overwrite table aliyun_re_demo_ml1m_item_meta_config partition (ds='recent')
  38. select 'genres', 'mv_enum' from dual
  39. ;
  40. -------------------------------------------------------------
  41. insert overwrite table aliyun_re_demo_ml1m_rec_item_info partition (ds='recent')
  42. select
  43. movie_id as item_id,
  44. concat('{"title":"', title, '","genres":"', genres, '"}') as item_info
  45. from alidata_rp.movielens_1m_movies
  46. ;
  47. -------------------------------------------------------------
  48. insert overwrite table aliyun_re_demo_ml1m_user_behavior partition (ds='recent')
  49. select
  50. user_id, movie_id as item_id,
  51. "grade" as bhv_type,
  52. rate as bhv_amt, 1.0 as bhv_cnt,
  53. FROM_UNIXTIME(ts) as bhv_datetime,
  54. null, null, null, null, null, null
  55. from alidata_rp.movielens_1m_ratings
  56. ;
本文导读目录