专栏首页流川疯编写程序的艺术大数据ETL实践探索(2)---- python 与aws 交互

大数据ETL实践探索(2)---- python 与aws 交互


大数据ETL 系列文章简介

本系列文章主要针对ETL大数据处理这一典型场景,基于python语言使用Oracle、aws、Elastic search 、Spark 相关组件进行一些基本的数据导入导出实战,如:

  • oracle使用数据泵impdp进行导入操作。
  • aws使用awscli进行上传下载操作。
  • 本地文件上传至aws es
  • spark dataframe录入ElasticSearch

等典型数据ETL功能的探索。

系列文章: 1.大数据ETL实践探索(1)---- python 与oracle数据库导入导出 2.大数据ETL实践探索(2)---- python 与aws 交互 3.大数据ETL实践探索(3)---- pyspark 之大数据ETL利器 4.大数据ETL实践探索(4)---- 之 搜索神器elastic search 5.使用python对数据库,云平台,oracle,aws,es导入导出实战 6.aws ec2 配置ftp----使用vsftp


本文主要介绍,使用python与典型云平台aws 进行交互的部分过程和经典代码

简介与实例

boto3 有了这个包,基本所有和aws 进行交互的库都可以搞定了

aws 云服务提供了一些基础到高端的组合帮助我们更好的进行交付,实现自己的想法。 我看过最经典的例子莫过于 利用 AWS Comprehend 打造近实时文本情感分析

来自aws 官方技术博客的

下面我们给出一些典型例子和场景代码

读写本地数据到aws s3

upload csv to aws

使用awscli上传大文件,当然直接浏览器上传也行,但是好像超过4g会有问题。 Download Windows Installer

Https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-path

When installed, use

AWS --version

to confirm whether it is normal

Single file upload eg.

AWS S3 --region cn-north-1 CP CL_CLLI_LOG.csv s3://xxxx/csv/

You can use the notepad++'s block pattern, edit each table into a command, and execute the bat file in the CMD,like below:

aws s3 --region cn-north-1 cp LOG1.csv s3://xxxx/csv/ 
aws s3 --region cn-north-1 cp LOG2.csv s3://xxxx/csv/ 

使用python 将本地文件写入s3

def writeJsonToS3(json,aws_access_key,aws_secret_access_key):
    client = boto3.client('s3', 'cn',aws_access_key_id=aws_access_key, aws_secret_access_key=aws_secret_access_key)
    
    filename = "_".join(['result',datetime.datetime.now().strftime('%Y%m%d%H%M%S'),'score']) + '.csv'
        
        
    bucket_name  = '...'
    route = '...'
        
    client.put_object(Body=json,Bucket=bucket_name, Key=route + filename )
                          
    logger.info("score result Added to S3")
    file_url = "https://.../{0}/{1}".format(bucket_name,filename)
        
    logger.info(image_url)

读出kinesis 中数据

def get_stream_data(stream_name, limit, timedelta):
    
    client = boto3.client('kinesis', 'cn', aws_access_key_id='',aws_secret_access_key='')
    if stream_name:
        stream = client.describe_stream(StreamName=stream_name)['StreamDescription']

        for shard in stream['Shards']:
            print ("### %s - %s"%(stream_name, shard['ShardId']))
            shard_iterator = client.get_shard_iterator(
                StreamName=stream_name,
                ShardId=shard['ShardId'],
                ShardIteratorType='AT_TIMESTAMP',  #'TRIM_HORIZON'|'LATEST'
                Timestamp=datetime.datetime.utcnow() - datetime.timedelta(minutes=timedelta)
            )['ShardIterator']
            
            for i in range(0,1):
                out = client.get_records(ShardIterator=shard_iterator, Limit=limit)
                if out["Records"]:
                    for record in out["Records"]:
                        data = json.loads(record["Data"])
                        print (data)
                    break
                else:
                    print (out)

                    
    else:
        print ("Need stream name !!!")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《自然语言处理实战入门》 第3课:NLP前置技术----正则表达式

    一个正则表达式(或RE)指定了一集与之匹配的字符串;模块内的函数可以让你检查某个字符串是否跟给定的正则表达式匹配(或者一个正则表达式是否匹配到一个字符串,这两种...

    用户1539362
  • python+OpenCV 特征点检测

    Harris角点检测算法是一个极为简单的角点检测算法,该算法在1988年就被发明了,算法的主要思想是如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点。...

    用户1539362
  • OpenCV计算物体的重心坐标(2值图像)

    http://download.csdn.net/detail/wangyaninglm/9389338 

    用户1539362
  • python lxml中etree的简单应用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • AWS CLI使用s3

    aws CLI是什么东西,暂且先不去了解,目前的需求是s3. 我在Jenkins上创建一个bucket,然后申请access_key,然后就可以使用s3来存储数...

    Ryan-Miao
  • [ 后端篇 ] 07 - AWS DynamoDB操作错误

    操作过程中一直返回 The provided key element does not match the schema,意思为 提供的关键元素与schema不...

    程序手艺人
  • G1 GC:一个神奇的 JVM 参数,减少你的内存消耗

    现代 Java 应用程序有大量的字符串操作,例如,Web 服务 API 调用(JSON、REST、SOAP 等)、外部数据源调用(SQL、从 DB 返回的数据等...

    Java_老男孩
  • 小白也能学会装“win10系统”,轻松撩妹

    到现在还记得刚读大学时,买笔记本开心激动的那个时刻。那个时候也不太会使用电脑,什么软件都是一键安装,最终导致电脑越来越卡。

    朱小五
  • Martin Casado跳出网络圈回首SDN/IBN/API

    SDNLAB
  • 前端html+js如何直接调用后端php函数?

    实际上,可能吗?除了使用表单给后台提供数据,想想,你向Linux系统写入文件试试?什么用户,哪个组,有无write权限?这些读写权限,您能过吗?

    程序员小助手

扫码关注云+社区

领取腾讯云代金券