iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >greenplum使用gplink连接外部数据源
  • 555
分享到

greenplum使用gplink连接外部数据源

2024-04-02 19:04:59 555人浏览 薄情痞子
摘要

    作为一个基于postgresql开发的数据仓库,随着近几年大数据概念的兴起也备受关注。    由于GP是近近几年才开源的数据库,网上资料很少,不像Mysql这

    作为一个基于postgresql开发数据仓库,随着近几年大数据概念的兴起也备受关注。

    由于GP是近近几年才开源数据库,网上资料很少,不像Mysql这样烂大街,基本上遇到的问题网上都可以搜到。而GP遇到问题只能靠自己判断了,很多时候只能看官方文档,而文档全为英文,对于英文很烂的本人表示真的很无力。。。

gplink的原理:

    greenplum 支持gpfdist协议外部表,gpfdist协议支持自定义transfORM

    gplink 使用jdbc连接外部数据源,定义transform,将jdbc数据源的数据转换为text格式导入GP或HAWQ。

    官方提供的有greenplum、sqlserver、Hiveoracle数据库的模版,现在需要连接的是mysql数据库,有点麻烦,踩了几个坑,在文章最后面会提到。

所需软件下载地址

gplink下载地址

https://GitHub.com/pivotalguru/gplink

mysql JDBC下载地址

Https://dev.mysql.com/downloads/connector/j/

这是官方文档的安装步骤

1.  Download latest version from PivotalGuru.com                                  

2.  Unzip <version>.zip

3.  source gplink_path.sh and add this to your .bashrc file                      

4.  Edit gplink.properties with correct Greenplum or Hawq connection information  

5.  Download 3rd party JDBC drivers and place it in $GPLINK_HOME/jar  

6.  Define source configurations in $GPLINK_HOME/connections/  

7.  Define external table names and columns in $GPLINK_HOME/tables/  

8.  Define SQL statements to execute in the source in $GPLINK_HOME/sql/  

9.  Create the External Table with gpltable

个人翻译的中文(翻译得不好见谅)

1、从pivotalguru.com下载最新版本

2、解压压缩包

3、source gplink_path.sh并添加到 .bashrc文件

4、在gplink.properties中编辑Greenplum或Hawq的连接信息

5、下载第三方JDBC驱动程序并将其放入$GPLINK_HOME/jar

6、在$GPLINK_HOME/connections/修改源数据库配置信息

7、在$GPLINK_HOME/tables/定义外部表名和列

8、在$GPLINK_HOME/sql/定义要在源数据库执行的sql语句

9、用gpltable创建外部表

下面开始安装


    安装之前要先在mysql端(172.16.104.71:3306)给GP开放访问权限,要关闭iptables,或iptables开放mysql端口。

    这里为了方便测试mysql给了最大权限,在实际环境中不能这么做

[root@s121 ~]# mysql -uroot -p123
mysql> grant all on *.* to "root"@"%" identified by '123';
mysql> flush privileges;

1、从pivotalguru.com下载最新版本

[root@mdw ~]# su - gpadmin
[gpadmin@mdw ~]$wget https://codeload.github.com/pivotalguru/gplink/zip/master

2、解压压缩包

[gpadmin@mdw ~]$unzip master

3、source gplink_path.sh并添加到 .bashrc文件

[gpadmin@mdw ~]$source gplink-master/gplink_path.sh
[gpadmin@mdw ~]$vi .bashrc 
source /home/gpadmin/gplink-master/gplink_path.sh

4、在gplink.properties中编辑Greenplum或Hawq的连接信息

[gpadmin@mdw ~]$ vi $GPLINK_HOME/gplink.properties 
connectionUrl=jdbc:postgresql://mdw:5432/gpdb     #gpdb为gp的数据库
classForName=org.postgresql.Driver
readCommitted=true
userName=gpadmin                                  #gp用户名
passWord=123456                                   #密码,注意后面不能有空格
gplinkHome=/usr/local/gplink
gplinkLog=//usr/local/gplink/log/gplink
gplinkYml=/usr/local/gplink/yml/gplink.yml
gplinkPortLower=24000
gplinkPortUpper=25000

5、下载第三方JDBC驱动程序并将其放入$GPLINK_HOME/jar

[gpadmin@mdw ~]$ wget https://dev.mysql.com/downloads/file/?id=470332
[gpadmin@mdw ~]$ tar xvf mysql-connector-java-5.1.42.tar.gz 
[gpadmin@mdw ~]$ cp mysql-connector-java-5.1.42/mysql-connector-java-5.1.42-bin.jar gplink-master/jar/

 6、在$GPLINK_HOME/connections/修改配置

[gpadmin@mdw ~]$ cp $GPLINK_HOME/connections/oracle.properties $GPLINK_HOME/connections/mysql.properties
[gpadmin@mdw ~]$ vi $GPLINK_HOME/connections/mysql.properties 
connectionUrl=jdbc:mysql://172.16.104.71:3306/test       #test为mysql的数据库
classForName=com.mysql.jdbc.Driver
readCommitted=true
userName=root                                            #mysql用户名
password=123                                             #mysql密码
extraProps=defaultRowPrefetch=2000                       #每次读取的数据量

7、在$GPLINK_HOME/tables/定义外部表名和列

[gpadmin@mdw ~]$ cp $GPLINK_HOME/tables/public.oracle_example.sql $GPLINK_HOME/tables/public.mysql.sql 
[gpadmin@mdw ~]$ vi $GPLINK_HOME/tables/public.mysql.sql 
tableName=public.mysql
columns=first_name text, last_name text

8、在$GPLINK_HOME/sql/定义要在源数据库执行的sql语句

[gpadmin@mdw ~]$ cp $GPLINK_HOME/sql/oracle_example.sql $GPLINK_HOME/sql/mysql_example.sql

 9、用gpltable创建外部表

[gpadmin@mdw ~]$gpltable -s $GPLINK_HOME/connections/mysql.properties -t $GPLINK_HOME/gplink.properties -f $GPLINK_HOME/sql/mysql_example.sql -a $GPLINK_HOME/tables/public.mysql.sql

此时登录GP数据库,发现多了一个mysql表

[gpadmin@mdw ~]$ psql -d gpdatabase
psql (8.2.15)
Type "help" for help.

gpdatabase=# \dx
                 List of relations
 Schema |     Name     | Type  |  Owner  | Storage  
--------+--------------+-------+---------+----------
 public | mysql        | table | gpadmin | external
(1 rows)

测试

[gpadmin@mdw ~]$ gplstart -t $GPLINK_HOME/gplink.properties 
Started all ports needed.
[gpadmin@mdw ~]$ gpldata -s $GPLINK_HOME/connections/mysql.properties -f $GPLINK_HOME/sql/mysql_example.sql
jon|roberts
JON|ROBERTS

OK,该状态说明连接成功。

至于怎么从mysql把数据导入greenplum,本人还未研究,自己慢慢摸索吧。

删除表命令

[gpadmin@mdw ~]$ gpldrop -t $GPLINK_HOME/connections/gplink.properties -n public.mysql

安装过程中踩到的几个坑

1、mysql.properties 中的ClassForName不对,因为没有mysql的模版,是拷贝oracle的模版来用

[gpadmin@mdw ~]$ gpldata -s $GPLINK_HOME/connections/mysql.properties -f $GPLINK_HOME/sql/mysql_example.sql
Exception in thread "main" java.sql.SQLException: mysql.jdbc.driver.MysqlDriver
	at ExternalData.main(ExternalData.java:25)

2、jdbc版本不对,下载了最新版,用不了

[gpadmin@mdw ~]$ gpldata -s $GPLINK_HOME/connections/mysql.properties -f $GPLINK_HOME/sql/mysql_example.sql
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0

3、连接失败,mysql主机的防火墙没关或没开放mysql端口

[gpadmin@mdw ~]$ gpldata -s $GPLINK_HOME/connections/mysql.properties -f $GPLINK_HOME/sql/mysql_example.sql
Exception in thread "main" java.sql.SQLException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds aGo. The driver has not received any 
	at ExternalData.main(ExternalData.java:25)

4、密码错误,原因是mysql.properties文件中的密码后面有空格

[gpadmin@mdw ~]$ gpldata -s $GPLINK_HOME/connections/mysql.properties -f $GPLINK_HOME/sql/mysql_example.sql
Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'172.16.104.21' (using password: YES)
	at ExternalData.main(ExternalData.java:25)


您可能感兴趣的文档:

--结束END--

本文标题: greenplum使用gplink连接外部数据源

本文链接: https://www.lsjlt.com/news/52516.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • greenplum使用gplink连接外部数据源
        作为一个基于postgresql开发的数据仓库,随着近几年大数据概念的兴起也备受关注。    由于GP是近近几年才开源的数据库,网上资料很少,不像mysql这...
    99+
    2024-04-02
  • greenplum中怎么使用gpfdist与外部表高效导入数据
    本篇内容介绍了“greenplum中怎么使用gpfdist与外部表高效导入数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!greenplu...
    99+
    2023-06-03
  • PostgreSQL中的外部表和外部数据源如何使用
    在PostgreSQL中,外部表和外部数据源可以通过使用外部数据包装器(Foreign Data Wrapper)来实现。外部数据包...
    99+
    2024-03-14
    PostgreSQL
  • k8s如何连接外部数据库
    在 Kubernetes 中连接外部数据库通常有以下几种方式: 使用 Service: 可以通过创建一个 Service 来暴露...
    99+
    2024-04-02
  • 阿里云数据库外网:连接阿里云数据库的外部网络
    简介 阿里云数据库是阿里云提供的一种高性能、高可靠性的云数据库服务。通过阿里云数据库外网,用户可以方便地连接阿里云数据库的外部网络,实现数据的远程访问和管理。连接阿里云数据库外网的方法1. 创建数据库实例首先,在阿里云控制台上创建一个数据库...
    99+
    2024-01-30
    阿里 数据库 网络
  • 如何解析SparkSQL外部数据源
    这期内容当中小编将会给大家带来有关如何解析SparkSQL外部数据源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。场景介绍:    大数据MapReduce,Hiv...
    99+
    2023-06-02
  • 如何连接ADO.NET数据源
    这篇文章主要讲解了“如何连接ADO.NET数据源”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何连接ADO.NET数据源”吧!ADO.NET数据源作为一个高效的.NET程序语言。其混合了函...
    99+
    2023-06-17
  • Spark SQL外部数据源的机制以及spark-sql的使用
    这篇文章主要介绍“Spark SQL外部数据源的机制以及spark-sql的使用”,在日常操作中,相信很多人在Spark SQL外部数据源的机制以及spark-sql的使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-02
  • java如何连接odbc数据源
    要连接ODBC数据源,可以使用Java的JDBC API,并使用ODBC驱动程序。以下是连接ODBC数据源的步骤:1. 下载和安装O...
    99+
    2023-09-11
    java
  • Java JSP 数据库集成:连接数据源
    步骤 1:创建数据库连接池 在 Java EE 应用程序中,使用连接池管理数据库连接。连接池是一个连接对象集合,应用程序可以从中获取和释放连接。这有助于提高性能和可伸缩性,因为连接被重用而不是每次访问数据库时都创建。 使用以下代码创建一个...
    99+
    2024-03-15
    JSP
  • ADO.NET中怎么连接数据源
    这篇文章将为大家详细讲解有关ADO.NET中怎么连接数据源,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。对于 ODBC .NET Framework 数据提供程序,连接字符串的格式设计为尽可...
    99+
    2023-06-17
  • SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接)
    目录 一、连接的介绍连接是什么?连接分几种?条件连接等值连接自然连接 二、连接的使用内连接 INNER JOIN内连接与等值连接区别内连接与自然连接区别 外连接 OUTE...
    99+
    2023-09-17
    sql 数据库 mysql
  • Hikari 数据库连接池内部源码实现的小细节
    目录Hikari 默认几个超时配置Hikari 连接池中默认连接数量为10Hikari通过CopyOnWriteArrayList保存所有的连接线程无法获取连接时通过Synchron...
    99+
    2023-02-17
    Hikari连接池 数据库连接池 Hikari连接池内部源码
  • Java怎么连接程序数据源
    这篇文章主要介绍“Java怎么连接程序数据源”,在日常操作中,相信很多人在Java怎么连接程序数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么连接程序数据源”...
    99+
    2024-04-02
  • 外网怎么连接mysql数据库
    使用外网连接mysql数据库的方法:1.开启3306端口;2.启动mysql;3.登录mysql数据库;4.进入数据表;5.执行命令添加远程连接用户;6.刷新数据库;具体步骤如下:首先,需要在服务器中检查防火墙,放开外网连接3306端口;3...
    99+
    2024-04-02
  • 使用IDEA连接Mysql数据库
      目录 前言 一、打开数据库服务器 二、打开IDEA连接数据库 总结 前言 IntelliJ IDEA集成了众多插件,方便开发者使用,使用其自带的Database模块就可以很方便的配置、连接到数据库,本次操作以MySQL为例(本实验需...
    99+
    2023-08-31
    java intellij idea mysql 数据库 database
  • 使用PHP连接PostgreSQL数据库
    PHP是一种广泛使用的服务器端脚本语言,它可以与多种数据库进行交互。PostgreSQL是一种关系型数据库管理系统,它是一项非常流行的开源数据库解决方案。本文将介绍如何使用PHP连接PostgreSQL数据库。一、安装PostgreSQL数...
    99+
    2023-05-16
    PHP postgresql 连接
  • 使用PHP连接MariaDB数据库
    MariaDB是一种开源的关系型数据库管理系统,它是MySQL的一个分支。PHP作为一种开源的服务器端脚本语言,被广泛应用于Web开发中。在很多Web开发项目中,需要使用PHP连接到MariaDB数据库,以便在Web应用程序中存储和检索数据...
    99+
    2023-05-17
    PHP mariadb 连接
  • 数据库连接池DBUtils使用
    一、简介   DBUtils简单说python实现的线程化数据库连接(连接池),DBUtils支持所有遵循DP-API 2规范的数据库连接模块,例如:mysql、sqlserver、oracle、sqlite3等,更多请参考官网:htt...
    99+
    2023-01-30
    数据库 连接池 DBUtils
  • Java使用JDBC连接数据库
    目录一、JDBC简介二、JDBC中常用类和接口1、驱动程序管理类(DriverManager)2、声明类(Statement)3、数据库连接类 (Connection)4、结果集合类...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作