1. package com.shinho.bigdatalake.redis;
  2.  
  3. import com.amazonaws.regions.Region;
  4. import com.amazonaws.regions.Regions;
  5. import com.amazonaws.services.s3.AmazonS3;
  6.  
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.nio.charset.Charset;
  11. import java.text.SimpleDateFormat;
  12. import java.util.ArrayList;
  13. import java.util.Date;
  14. import java.util.List;
  15. import java.util.Map;
  16.  
  17. import org.apache.commons.csv.CSVFormat;
  18. import org.apache.commons.csv.CSVParser;
  19. import org.apache.commons.csv.CSVRecord;
  20. import org.apache.commons.io.IOUtils;
  21. import org.apache.log4j.Logger;
  22.  
  23. import com.alibaba.fastjson.JSON;
  24. import com.amazonaws.auth.BasicAWSCredentials;
  25. import com.amazonaws.services.s3.AmazonS3Client;
  26. import com.amazonaws.services.s3.model.GetObjectRequest;
  27. import com.amazonaws.services.s3.model.ObjectListing;
  28. import com.amazonaws.services.s3.model.S3Object;
  29. import com.amazonaws.services.s3.model.S3ObjectInputStream;
  30. import com.amazonaws.services.s3.model.S3ObjectSummary;
  31. import com.shinho.test.TestApp;
  32.  
  33. import redis.clients.jedis.Jedis;
  34.  
  35. public class S3Utils {
  36. private static final Logger logger = Logger.getLogger(S3Utils.class);
  37.  
  38. public static AmazonS3 s3 = null;
  39.  
  40. public static final String AWS_ACCESS_KEY = "xxx";
  41.  
  42. public static final String AWS_SECRET_KEY = "xxx";
  43.  
  44. public static final String bucketName = "xxx";
  45.  
  46. static{
  47. s3 = new AmazonS3Client(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY));
  48. s3.setRegion(Region.getRegion(Regions.CN_NORTH_1));
  49. }
  50.  
  51. public static int getData() throws Exception{
  52. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  53. String json = "";
  54. ObjectListing ol = s3.listObjects(bucketName);
  55. List<S3ObjectSummary> objects = ol.getObjectSummaries();
  56. for (S3ObjectSummary os: objects) {
  57. System.out.println("* " + os.getKey());
  58. }
  59. S3Object obj = s3.getObject(new GetObjectRequest(bucketName,"test/tmp_test_put1.csv"));
  60. Jedis jedis = new Jedis("xxx");
  61. jedis.select(15);
  62. List<CSVRecord> list = null;
  63. if(obj != null){
  64. InputStream input = null;
  65. input = obj.getObjectContent();
  66. InputStreamReader reader = new InputStreamReader(input, Charset.forName("utf-8"));
  67. CSVFormat format = CSVFormat.DEFAULT;
  68. CSVParser parser = format.parse(reader);
  69. logger.info("开始读取:"+sdf.format(new Date()));
  70. list = parser.getRecords();
  71. logger.info("完成读取:"+sdf.format(new Date()));
  72. for(CSVRecord csv:list){
  73. Map<String, String> map = csv.toMap();
  74. String key = "gdt_cmplya_mid_dist_goal;" + map.get(2)+";"
  75. +map.get(1)+";";
  76. String value = JSON.toJSONString(map);
  77. jedis.set(key, value);
  78. }
  79. logger.info("完成转换:"+sdf.format(new Date()));
  80. }
  81. return list.size();
  82. }
  83. }

pom.xml如下:

  1. <dependency>
  2. <groupId>com.amazonaws</groupId>
  3. <artifactId>aws-java-sdk</artifactId>
  4. <version>1.10.26</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.commons</groupId>
  8. <artifactId>commons-csv</artifactId>
  9. <version>1.6</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>redis.clients</groupId>
  13. <artifactId>jedis</artifactId>
  14. <version>2.9.0</version>
  15. </dependency>

Java连接S3并上传Redis的更多相关文章

  1. Java FtpClient 实现文件上传服务

    一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...

  2. JAVA中使用FTPClient上传下载

    Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...

  3. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  4. Java 微信公众号上传永久素材的方法

    Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @Request ...

  5. Android连接socket服务器上传下载多个文件

    android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...

  6. HTTP请求中的Body构建——.NET客户端调用JAVA服务进行文件上传

    PS:今日的第二篇,当日事还要当日毕:)   http的POST请求发送的内容在Body中,因此有时候会有我们自己构建body的情况. JAVA使用http—post上传file时,spring框架中 ...

  7. java微信接口之四—上传素材

    一.微信上传素材接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=A ...

  8. Java中实现文件上传下载的三种解决方案

    第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null ...

  9. 【原创】用JAVA实现大文件上传及显示进度信息

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/grayprince/UploadBigFil ...

随机推荐

  1. 20155219实验四 Android开发基础设计实验报告

    20155219实验四 Android开发基础设计实验报告 实验内容 安装Andriod Studio并配置软件 使用Andriod Studio软件实现Hello World!+学号的小程序 实验步 ...

  2. FZU软工第十一次作业-软件产品案例分析

    目录 前言: 第一部分.调研,评测: 1.1.初次感觉: 1.2.企业号bug: 1.3.你觉得为什么这个产品组的人没有发现这些bug: 1.4.假设你们团队需要开发这套系统,需要注意哪些方面: 2. ...

  3. nginx常用参数设置

    1)隐藏nginx header 版本号 使用curl -I http://www.10.0.3.46 会发现server那里显示版本号 在nginx.conf的http里添加参数server_tok ...

  4. centos7/linux 磁盘管理入门

    添加新磁盘并挂载: 设置虚拟机系统里添加磁盘,重启虚拟机后,虚拟机目录/dev下会增加一个sdb设备. 使用fdisk /dev/sdb 管理磁盘分区,首先p 查看磁盘分区信息,然后n增加一个主分区, ...

  5. Using C++ new() placement in embedded system

    For new(), there are three definition in C++11, which are listed below. throwing (1) void* operator ...

  6. ADB连接手机的两种方式(usb数据线连接和wifi连接)

    ADB(Android Debug Bridge)安卓测试桥,它是连接电脑开发端和安卓设备的桥梁,这个安卓设备可以是真实的安卓手机或者平板,也可以是虚拟的安卓模拟器,   这里介绍ADB连接手机的两种 ...

  7. css易错点总结

    传智老师说:找工作要问调不调IE6,同样的工作待遇,如果不用调IE6开12000工资,要调IE6,直接加价到15000,因为调IE6能累死人,气死人. 行高要在字体后面,如下: 正确:font:400 ...

  8. mysql之 Percona XtraDB Cluster集群线程模型

    Percona XtraDB集群创建一组线程来为其操作提供服务,这些线程与现有的MySQL线程无关.有三个主要线程组: 一.Applier线程 Applier线程应用从其他节点接收的写入集.写消息直接 ...

  9. MYSQL 中的 int(11) 到底代表什么意思?

    各 INT 类型无符号最大值用单位表示: INT 类型 无符号最大值用单位表示 TINYINT 255 SMALLINT 65535 MEDIUMINT 1677 万 INT 42 亿 BIGINT ...

  10. ElasticSearch(二) 关于DSL

    关于Lucene里面的查询评分,其实是基于一个公式:TF/ IDF(Term-Frequency/ Inverse Document Frequency),词频率/ 倒排文档频率,这个公式讲了一个故事 ...