`

kettle阿里云下载日志文件

 
阅读更多

拖拽控件User Defined Java Class

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;

import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.plugins.RepositoryPluginType;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.RepositoriesMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.RepositoryElementMetaInterface;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.aliyun.openservices.oss.OSSClient;
import com.aliyun.openservices.oss.model.GetObjectRequest;
import com.aliyun.openservices.oss.model.OSSObjectSummary;
import com.aliyun.openservices.oss.model.ObjectListing;

private int accessIdIndex;
private int accessKeyIndex;
private int bucketNameIndex;
private int prefixIndex;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException 
{
  Object[] r=getRow();
  if (r==null)
  {
    setOutputDone();
	return false;
  }

  if (first) {
     accessIdIndex = getInputRowMeta().indexOfValue(getParameter("ACCESS_ID"));
     if (accessIdIndex<0) {
         throw new KettleException("accessId field not found in the input row, check parameter 'accessId'!");
     }
     accessKeyIndex = getInputRowMeta().indexOfValue(getParameter("ACCESS_KEY"));
     if (accessKeyIndex<0) {
         throw new KettleException("accessKey field not found in the input row, check parameter 'accessKey'!");
     }
     bucketNameIndex = getInputRowMeta().indexOfValue(getParameter("BUCKET_NAME"));
     if (bucketNameIndex<0) {
         throw new KettleException("bucketName field not found in the input row, check parameter 'bucketName'!");
     }
     prefixIndex = getInputRowMeta().indexOfValue(getParameter("PREFIX"));
     if (prefixIndex<0) {
         throw new KettleException("prefix field not found in the input row, check parameter 'prefix'!");
     }
     first=false;
  }
 
  Object[] outputRowData = RowDataUtil.resizeArray(r, data.outputRowMeta.size());
  int outputIndex = getInputRowMeta().size();

  String accessId = getInputRowMeta().getString(r, accessIdIndex);
  String accessKey = getInputRowMeta().getString(r, accessKeyIndex);
  String bucketName = getInputRowMeta().getString(r, bucketNameIndex);
  String prefix = getInputRowMeta().getString(r, prefixIndex);
  downAliyunLog(accessId, accessKey, bucketName, prefix);

  putRow(data.outputRowMeta, outputRowData);

  return true;
}

	public void downAliyunLog(String accessId, String accessKey, String bucketName, String prefix) {
        OSSClient client = new OSSClient(accessId, accessKey);
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, -1);

        String date = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
        ObjectListing ol = client.listObjects(bucketName, prefix + date);
        List yesterdayList = ol.getObjectSummaries();
        
        

        date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        ol = client.listObjects(bucketName, prefix + date);
        List todayList = ol.getObjectSummaries();
        

        List list = new ArrayList();
        list.addAll(yesterdayList);
        list.addAll(todayList);
        
        File downloadPath = new File(System.getProperty("LOG_FOLDER"));
        if(!downloadPath.exists())
        	downloadPath.mkdirs();
        File downloadPathBak = new File(System.getProperty("DOWN_LOG_FOLDER"));
        if(!downloadPathBak.exists())
        	downloadPathBak.mkdirs();
        List file = Arrays.asList(downloadPath.list());
        List fileBak = Arrays.asList(downloadPathBak.list());
        for (int i = 0; i < list.size(); i++) {
        	OSSObjectSummary ossObjectSummary = (OSSObjectSummary) list.get(i);
        	if(!file.contains(ossObjectSummary.getKey()) && !fileBak.contains(ossObjectSummary.getKey()))
                client.getObject(new GetObjectRequest(bucketName, ossObjectSummary.getKey()), new File(downloadPath, ossObjectSummary.getKey()));
		}
        System.out.println(list.size());
	}

 

分享到:
评论

相关推荐

    kettle7.1批量下载HTTP文件

    【Kettle7.1批量下载HTTP文件】是一个利用Pentaho Data Integration(也称为Kettle或Spoon)工具实现从HTTP源批量下载文件的实践案例。Kettle是一款强大的ETL(提取、转换、加载)工具,它允许用户通过图形化界面...

    kettle下载文件.zip

    在本压缩包"Kettle下载文件.zip"中,您将找到与Kettle相关的经典示例,这些示例可以帮助初学者快速上手并理解其工作原理。 Kettle的主要特点包括: 1. **图形化界面**:Kettle使用直观的拖放式界面,通过工作流...

    《使用kettle批量下载文件》示例代码

    本示例代码着重讲解如何利用Kettle进行批量文件下载,这在大数据处理、数据仓库构建以及自动化任务执行等场景中非常常见。 首先,我们需要理解Kettle的工作流程。Kettle通过图形化的Job和Transformation设计界面,...

    kettle批量下载文件.zip

    标题 "kettle批量下载文件.zip" 提到的核心技术是 Pentaho Data Integration(简称 Kettle 或 PDI),这是一个开源的数据集成工具,广泛用于ETL(Extract, Transform, Load)过程,即从不同数据源提取数据、转换数据...

    【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL

    "【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL.kjb"是一个作业文件,它可能包含启动FTP连接、下载文件、调用转换等一系列步骤。"02处理数据至PostgreSQL.ktr"是转换文件,负责具体的业务逻辑处理,...

    使用Pentaho Kettle批量下载文件 示例代码

    使用Pentaho kettle 批量下载文件 的示例代码 包含三个文件,按执行顺序依次为:main.kjb、filelist.ktr、download.kjb。 压缩包中有2个版本的源码。 一个源码是从“txt文件”中读入URL路径,下载文件; 一个源码是...

    Kettle运行日志记录

    `运行日志测试.kjb`和`测试Job日志记录.kjb`这两个文件很可能是用于演示如何配置和使用Kettle Job的日志记录功能。Job是Kettle中的一个高级概念,它由一系列相互关联的Transformation和控制流组成,用于组织复杂的...

    官方kettle最新8.2下载百度云

    百度云进行下载 Kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的...

    Kettle数据导出为XML文件

    标题“Kettle数据导出为XML文件”涉及的是使用Pentaho Data Integration(通常称为Kettle或ETL工具)将数据转换并导出为XML格式的过程。Kettle是一款开源的数据集成工具,它允许用户通过图形化界面设计数据处理流程...

    kettle动态设置输入文件路径

    【标题】"Kettle动态设置输入文件路径"指的是在Pentaho Data Integration(简称Kettle,也称为Spoon)工具中,如何根据特定条件或变量动态地设定数据处理过程中的输入文件路径。Kettle是一个开源的数据集成平台,...

    kettle9.0百度网盘下载链接

    ### Kettle 9.0 百度网盘下载链接及相关知识点 #### 一、Kettle简介 Kettle是一款开源的数据集成工具,它主要用于数据抽取、转换和加载(ETL)等操作,支持多种数据源,如关系型数据库、NoSQL数据库、文件系统等。...

    springboot 集成kettle核心包依赖文件配置信息pom.xml

    springboot 集成kettle核心包依赖文件配置信息pom.xml

    kettle批量解析多个xml文件

    标题中的“kettle批量解析多个xml文件”指的是使用Kettle(也称为Pentaho Data Integration,简称PDI)工具处理XML文件的批量操作。Kettle是一款开源的数据集成工具,它提供了丰富的转换和作业来实现数据抽取、转换...

    从ftp上下载txt文件插入到数据库中的原文件

    本教程将详细讲解如何利用Kettle从FTP服务器下载TXT文件并将其内容插入到数据库中。 首先,我们需要理解Kettle的工作流程。它通过工作流(Job)和转换(Transformation)两个主要组件来实现数据处理。工作流用于...

    使用Kettle获取MySQL日志文件名称

    使用Kettle获取MySQL日志文件名称

    Kettle8.0清洗交易所DBF文件数据

    在安装和配置好JDK环境后,可以解压下载的Kettle压缩包,并运行其中的Spoon.bat文件。Spoon是Kettle的图形化用户界面工具,通过它可以进行数据库连接的操作。连接数据库时,需要建立或编辑数据库连接,这涉及到选择...

    kettle8.0编译环境文件

    Kettle 8.0 编译环境文件是一个包含所有必要组件和配置的压缩包,用于构建和编译Pentaho Data Integration(Kettle)8.0的源代码。Kettle,也被称为Spoon,是一个开源的数据集成工具,它提供了一个图形化的工作台,...

    kettle下载-一款免费开源ETL工具

    4. **Connections**:Kettle支持多种数据源连接,包括但不限于各种类型的数据库(如MySQL、Oracle、SQL Server)、文件系统(如FTP、SFTP、HDFS)、Web服务、云存储等。用户可以通过配置连接参数来接入这些数据源。 ...

Global site tag (gtag.js) - Google Analytics