本文为您介绍如何使用DataWorks的PyODPS类型节点,借助开源结巴中文分词包实现对中文字段的分词并写入新的表。

前提条件

  • 请首先确保您已经完成DataWorks工作空间的创建,本例使用简单模式的工作空间,详情请参见创建工作空间。完成工作空间创建后,单击进入数据开发

  • 请在GitHub下载开源结巴分词中文包。

背景信息

PyODPS集成了Maxcompute的Python SDK。您可以在DataWorks的PyODPS节点上直接编辑Python代码并使用Maxcompute的Python SDK。关于PyODPS节点的详情请参见PyODPS节点

操作步骤

  1. 创建业务流程。
    1. 右键单击业务流程,选择新建业务流程

    2. 输入您的业务流程名称后,单击新建

  2. 上传jieba-master.zip包。
    1. 右键单击资源,选择Archive

    2. 上传您已下载到本地的jieba-master.zip,勾选上传为ODPS资源,单击确定

    3. 提交资源。

  3. 创建测试数据表。
    1. 右键单击,选择新建表。输入表名jieba_test

    2. 单击DDL模式,输入建表DDL语句如下。
      本教程准备了两列测试数据,您在后续开发过程中可以选择一列进行分词。
      CREATE TABLE `jieba_test` (
          `chinese` string,
          `content` string
      );
    3. 单击提交到生产环境

  4. 创建测试结果存放表。
    本例仅对测试数据的chinese列做分词处理,因此结果表仅有一列,创建方法同上。DDL语句如下所示。
    CREATE TABLE `jieba_result` (
        `chinese` string
    ) ;
  5. 上传测试数据。
    本例已为您准备好分词测试数据,请点击此处下载
    1. 单击导入

    2. 输入测试数据表名jieba_test,单击下一步

    3. 单击浏览,上传您下载到本地的jieba_test.csv文件,单击下一步

    4. 勾选按名称匹配,单击导入数据

  6. 创建PyODPS节点。
    1. 在业务流程中右键单击数据开发,选择新建数据开发节点 > PyODPS

    2. 输入节点名称word_split
    3. 输入您的PyODPS代码。
      输入代码如下,释义请见代码注释。
      def test(input_var):
          import jieba
          import sys
          reload(sys)
          sys.setdefaultencoding('utf-8')
          result=jieba.cut(input_var, cut_all=False)
          return "/ ".join(result)
      hints = {
          'odps.isolation.session.enable': True
      }
      libraries =['jieba-master.zip']  #引用您的jieba-master.zip压缩包。
      iris = o.get_table('jieba_test').to_df()  #引用您的jieba_test表中的数据。
      example = iris.chinese.map(test).execute(hints=hints, libraries=libraries)
      print(example)  #查看分词结果,分词结构为MAP类型数据。
      abci=list(example)   #将分词结果转为list类型数据。
      i = 0
      for i in range(i,len(abci)):
          pq=str(abci[i])
          o.write_table('jieba_result',[pq])  #通过循环,将数据逐条写入您的结果表jieba_result中。
          i+=1
      else:
          print("done")
    4. 运行代码进行测试。

    5. 您可以在运行日志查看结巴分词的程序运行结果。

  7. 数据开发创建一个ODPS SQL类型节点,输入select * from jieba_result,单击运行。

  8. 查看运行结果,验证数据是否已写入结果表中。