精华内容
下载资源
问答
  • 机器学习中使用scikit学习进行端到端项目 这是一个使用scikit-learn的端到端机器学习项目。 数据源已通过Web导入数据集的链接为“ ”。 现在是时候动手处理数据并从中提取见解了。
  • rstudio导入数据I have completed two courses at DataCamp that introduced me to the concept of importing data into R. There are numerous ways to import the data. I would like to discuss in detail some ...

    rstudio导入数据

    I have completed two courses at DataCamp that introduced me to the concept of importing data into R. There are numerous ways to import the data. I would like to discuss in detail some of the methods that I learned in the course. Let’s get started.

    我已经在DataCamp完成了两门课程,向我介绍了将数据导入R的概念。有很多方法可以导入数据。 我想详细讨论我在本课程中学到的一些方法。 让我们开始吧。

    Data can come from many sources. Some of the most common ones are

    数据可以来自许多来源。 一些最常见的是

    • Flat Files — CSV, txt, tsv, etc

      平面文件-CSV,txt,tsv等
    • Data from Excel

      来自Excel的数据
    • DataBases — Postgresql, Mysql, etc

      数据库-Postgresql,Mysql等
    • Web

      网页
    • Statistical Softwares — SAS, SPSS, STATA

      统计软件-SAS,SPSS,STATA

    平面文件 (Flat-Files)

    What is a flat-file?

    什么是平面文件?

    According to Wikipedia, A flat-file database is a database stored in a file called a flat-file. Records follow a uniform format, and there are no structures for indexing or recognizing relationships between records. The file is simple. A flat file can be a plain text file or a binary file.

    根据Wikipedia的说法, 平面文件数据库是存储在称为Flat文件的文件中的数据库。 记录遵循统一的格式,并且没有索引或识别记录之间关系的结构。 该文件很简单。 平面文件可以是纯文本文件或二进制文件。

    Listed below are some of the packages that will help you to deal while working with the Flat-Files in R.

    下面列出了一些软件包,可以帮助您在使用R中的Flat-Files时进行处理。

    UTIL

    UTIL

    This package is loaded by default when you load R.

    默认情况下,在加载R时会加载此软件包。

    • read.table(): Main function. Reads a file in table format and creates a data frame from it. It offers many arguments to classify the incoming data.

      read.table() :主要功能。 读取表格式的文件并从中创建数据框。 它提供了许多参数来分类传入的数据。

    • read.csv(): Wrapper function for read.table(). Used to read comma-separated (CSV) files.

      read.csv() :read.table()的包装函数。 用于读取逗号分隔(CSV)文件。

    • read.delim(): Wrapper Function used to read tab-separated files. read.delim() is used if the numbers in your file use periods(.) as decimals.

      read.delim() :包装函数,用于读取制表符分隔的文件。 如果文件中的数字使用点号(。)作为小数,则使用read.delim()。

    • read.csv2() : read.csv() and read.csv2() are identical. The only difference is that they are set up depending on whether you use periods or commas as decimal points in numbers.

      read.csv2() :read.csv()和read.csv2()相同。 唯一的区别是,它们的设置取决于您使用句点还是逗号作为数字的小数点。

    • read.delim2() : read.delim2 is used when the numbers in your file use commas(,) as decimals.

      read.delim2() :当文件中的数字使用逗号(,)作为小数时,将使用read.delim2。

    Image for post
    read.csv() function read.csv()函数的输出

    Specialized Packages

    专业套餐

    readr

    阅读器

    This package makes our life easier. It is fast, convenient, and more efficient than the utils package. I tend to use this always.

    这个包裹使我们的生活更轻松。 它比utils包更快,更方便且更高效。 我倾向于总是使用它。

    read_r supports seven file formats with seven functions:

    read_r支持具有七个功能的七种文件格式:

    Output of the read_csv function showing the column classes by creating a tibble.
    read_csv() function read_csv()函数的输出

    readr package work with Tibbles. According to the documentation, Tibbles are data frames, but they tweak some older behaviors to make life a little easier. The printout also shows the column classes which is missing in the read.csv ‘s output.

    阅读器包可与Tibbles一起使用。 根据文档,Tibbles 数据帧,但它们可以调整一些较旧的行为以使生活更轻松。 打印输出还显示了read.csv输出中缺少的列类。

    data.table

    数据表

    The key metrics of the author’s Matt Dowle & Arun Srinivasan of data.table is speed. The package is mainly about data manipulation but also features a super powerful function to read the data into R: fread().

    作者data.table的Matt Dowle和Arun Srinivasan的关键指标是速度。 该软件包主要是关于数据操作的,但还具有将数据读入R:fread()的超级强大功能。

    If you have huge files to import into R you can use data.table package.

    如果您有大量文件要导入到R中,则可以使用data.table包。

    Image for post
    fread() function fread()函数的输出

    Fread() can handle the names automatically. It can also infer column types and field separators without having to specify these. It is an improved version of read.table() which is extremely fast, more convenient, and adds more functionality.

    Fread()可以自动处理名称。 它也可以推断列类型和字段分隔符,而不必指定它们。 它是read.table()的改进版本,具有极高的速度,更方便的功能并增加了更多功能。

    电子表格 (Excel)

    The most common tool used in Data Analysis is Microsoft Excel. The typical structure of excel file contains different sheets with tabular data.

    数据分析中最常用的工具是Microsoft Excel。 excel文件的典型结构包含具有表格数据的不同工作表。

    We need to explore the files and then import some data from it. R offers two functions to handle this.

    我们需要浏览文件,然后从中导入一些数据。 R提供了两个函数来处理此问题。

    • excel_sheets(): Explore different sheets

      excel_sheets() 浏览其他工作表

    The result is a simple character vector that returns the names of the sheets inside the excel file.

    结果是一个简单的字符向量,该向量返回excel文件中工作表的名称。

    • read_excel() : Import the Data into R

      read_excel() :将数据导入R

    Image for post
    Output for read_excel() function
    read_excel()函数的输出

    The first sheet is imported as a tibble by default. We can explicitly specify the sheet to import by using either index or by setting a sheet argument. Both the below calls do the same work.

    默认情况下,第一张图纸作为小标题导入。 我们可以通过使用索引或设置工作表参数来明确指定要导入的工作表。 以下两个调用执行相同的工作。

    However, loading in every sheet manually and then merging them in a list can be quite tedious. Luckily, you can automate this with lapply() This function returns a list of the same length.

    但是,手动加载每张工作表,然后将它们合并到列表中可能非常繁琐。 幸运的是,您可以使用lapply()自动执行此lapply() 此函数返回相同长度的列表。

    XL Connect

    XL连接

    Developed by Martin Studer. It acts as a bridge between R and Excel.It allows the user to perform any activity like editing sheets, formatting data, etc. on Excel from inside R, It works with XLS and XLSX files. XLConnect works on top of Java. Make sure you have all the dependencies like Java Development Kit (JDK) installed and correctly registered in R.

    由Martin Studer开发。 它充当R和Excel之间的桥梁。它允许用户从R内部在Excel上执行任何活动,如编辑工作表,格式化数据等。它适用于XLS和XLSX文件。 XLConnect在Java之上工作。 确保已安装所有依赖项,例如Java Development Kit(JDK),并在R中正确注册。

    Install the package before using it, the following command will do the work for you:

    在使用软件包之前,先安装它,以下命令将为您完成工作:

    Image for post
    XLConnect into the workspace XLConnect加载到工作区中

    loadWorkbook(): This function loads a Microsoft Excel file into R which can be further manipulated. Setting a create argument to True will ensure that the file will be created if it does not exist yet.

    loadWorkbook() :此函数将Microsoft Excel文件加载到R中,可以进一步对其进行操作。 将create参数设置为True将确保如果尚不存在该文件,则将创建该文件。

    Image for post
    loadWorkbook() function loadWorkbook()函数的结构

    This object is the actual bridge between R and Excel. After building a workbook in R, you can use it to get the information on the Excel file it links to. Some of the basic functions are

    该对象是R和Excel之间的实际桥梁。 在R中构建工作簿后,可以使用它来获取链接到的Excel文件上的信息。 一些基本功能是

    • get_Sheets(): Thie function returns the sheets as a list from the excel file.

      get_Sheets() :Thie函数从excel文件返回工作表作为列表。

    Image for post
    getSheets() getSheets()的输出
    • readWorksheet(): Allows the user to read the data from the specified sheets by simply giving the name of the sheet in the sheet argument of the function.

      readWorksheet() :允许用户通过在函数的工作表参数中简单给出工作表的名称来从指定工作表中读取数据。

    Image for post
    readWorksheet() readWorksheet()的输出

    The best part of this function is you can specify from which row and which column to start reading information.

    此功能的最好部分是可以指定从哪一行和哪一列开始读取信息。

    Image for post
    readWorksheet() readWorksheet()的输出

    PS: Make sure the dataset is imported into the working directory before performing any operation on it.

    PS:在对数据集执行任何操作之前,请确保将其导入到工作目录中。

    关系数据库 (Relational Databases)

    A relational database is a collection of data items with pre-defined relationships between them. These items are organized as a set of tables with columns and rows. Tables are used to hold information about the objects to be represented in the database.

    关系数据库是数据项之间具有预定义关系的集合。 这些项目被组织为一组具有列和行的表。 表用于保存有关数据库中要表示的对象的信息。

    Open Source: MySQL, PostgreSQL, SQLite

    开源 :MySQL,PostgreSQL,SQLite

    Proprietary: Oracle Database, Microsoft SQL Server

    专有 :Oracle数据库,Microsoft SQL Server

    Depending on the type of database you want to connect to, you’ll have to use different packages in R.

    根据要连接的数据库类型,您必须在R中使用不同的软件包。

    MySQL: RMySQL

    MySQL:RMySQL

    PostgreSQL: RPostgreSQL

    PostgreSQL:RPostgreSQL

    Oracle Database: ROracle

    Oracle数据库:ROracle

    DBI defines an interface for communication between R and relational database management systems. All classes in this package are virtual and need to be extended by the various R/DBMS implementations.

    DBI定义了R和关系数据库管理系统之间进行通信的接口。 该软件包中的所有类都是虚拟的,需要通过各种R / DBMS实现进行扩展。

    In more technical terms, DBI is an interface and RMySQL is the implementation.

    用更多的技术术语来说,DBI是一个接口,RMySQL是实现。

    As usual, let’s install the package first and import the library DBI. Installing RMySQL will automatically install DBI.

    和往常一样,让我们​​先安装软件包并导入库DBI。 安装RMySQL将自动安装DBI。

    The first step is creating a connection to the remote MySQL database. You can do it as follows

    第一步是创建与远程MySQL数据库的连接。 您可以按照以下步骤进行操作

    Now that we are connected to the database, we have access to the content inside it. The following functions help us in the reading, listing, querying, and performing other operations on the database.

    既然我们已经连接到数据库,就可以访问其中的内容。 以下功能可帮助我们读取,列出,查询数据库以及对数据库执行其他操作。

    • dbListTables: This function lets the user list the tables in the database. This function requires the connection object as an input and outputs a character vector with the table names.

      dbListTables :此功能使用户可以列出数据库中的表。 此函数需要连接对象作为输入,并输出带有表名的字符向量。

    Image for post
    • dbReadTable: Reads the desired tables and displays the results as a dataframe.

      dbReadTable :读取所需的表,并将结果显示为数据框。

    Selective Importing

    选择性导入

    We can do this in two ways

    我们可以通过两种方式做到这一点

    • Reading the entire table and using the subsetting function to subset the data.

      读取整个表并使用子设置功能对数据进行子集化。
    • dbGetQuery(): This function sends a query, retrieve results, and then clears the result set. The string here is a common SQL query.

      dbGetQuery() :此函数发送查询,检索结果,然后清除结果集。 此处的字符串是常见SQL查询。

    • dbFetch(): This function helps to fetch records from previously executed queries and allows us to specify maximum records to retrieve per fetch.

      dbFetch() :此函数有助于从以前执行的查询中提取记录,并允许我们指定每次提取要检索的最大记录数。

    Note: dbSendQuery() sends the query to the database and to fetch it we should use dbFetch(). It does the same work as dbGetQuery(). This can be useful when you want to load in tons of records chunk by chunk.

    注意:dbSendQuery()将查询发送到数据库,并且要获取它,我们应该使用dbFetch()。 它执行与dbGetQuery()相同的工作。 当您要逐块加载大量记录时,此功能很有用。

    Do not forget to disconnect from it.

    不要忘记断开连接。

    网页 (Web)

    Downloading a file from the Internet means sending a GET request and receiving the file you asked for.

    从Internet下载文件意味着发送GET请求并接收您要的文件。

    Reading CSV, TSV, or text files we can specify the URL as a character string in the function in the following way.

    读取CSV,TSV或文本文件时,我们可以通过以下方式在函数中将URL指定为字符串。

    Excel File

    Excel文件

    R doesn’t know how to handle excel files directly coming from the web so, we need to download it before we import. Once the file is downloaded we can use read_excel function to read and import the file.

    R不知道如何处理直接来自网络的excel文件,因此,在导入之前,我们需要先下载它。 下载文件后,我们可以使用read_excel函数读取和导入文件。

    JSON Data

    JSON数据

    JavaScript Object Notation (JSON) is a very simple, concise, and well-structured form of data. Moreover, it is human readable and also easy to interpret and generate for machines. This is why JSON is used in communicating with API’s (Application Programming Interface).

    JavaScript Object Notation(JSON)是一种非常简单,简洁且结构良好的数据形式。 此外,它是人类可读的,并且易于为机器解释和生成。 这就是为什么在与API(应用程序编程接口)进行通信时使用JSON的原因。

    jsonlite Package

    jsonlite包

    It is a robust, high-performance JSON parser and generator for R.

    它是R的强大,高性能JSON解析器和生成器。

    Let’s install the package first. After a successful installation, we will be using fromJSON function to get the data from the URL.

    让我们先安装软件包。 成功安装后,我们将使用fromJSON函数从URL获取数据。

    Image for post
    R List with JSON Data
    带JSON数据的R列表

    Another interesting function from the package is prettify and minify. They are mostly used to format the JSON data.

    软件包中另一个有趣的功能是美化和缩小。 它们主要用于格式化JSON数据。

    • prettify/minify: Prettify adds indentation to a JSON string; minify removes all indentations/ whitespace.

      prettify / minify :Prettify将缩进添加到JSON字符串; minify删除所有缩进/空格。

    统计软件包 (Statistical Software Packages)

    Image for post
    • haven

      避风港

    This package is used to read SAS, STATA, SPSS data files. It does this by wrapping around the ReadStat C library by Evan Miller. This package is extremely simple to use.

    该软件包用于读取SAS,STATA,SPSS数据文件。 它是通过环绕Evan Miller的ReadStat C库来实现的。 该软件包非常易于使用。

    Let’s install the package first and load the library.

    让我们先安装软件包并加载库。

    • read_sas: The function reads SAS files.

      read_sas :该函数读取SAS文件。

    Similarly, we can use read_stata(), read_dta() and read_por() and read_sav() for other types of files.

    同样,对于其他类型的文件,我们可以使用read_stata()read_dta()read_por()read_sav()

    • Foreign

      国外

    Written by R Core Team. It is less consistent in naming and use but it supports many foreign data formats like Systat, Weka, etc. We can also export the data into various formats.

    由R Core Team撰写。 它在命名和使用上不太一致,但是它支持许多外部数据格式,例如Systat,Weka等。我们还可以将数据导出为各种格式。

    Let’s install the package and load the library.

    让我们安装软件包并加载库。

    SAS

    SAS

    The drawback of this package is it cannot import .sas7bdat. It can only import SAS libraries (.xport)

    该软件包的缺点是无法导入.sas7bdat 。 它只能导入SAS库(.xport)

    STATA

    斯塔塔

    This package can read .dta files of STATA versions 5 to12.

    该软件包可以读取STATA版本5至12的.dta文件。

    convert.factors: Convert labeled STATA values to R factors.

    convert.factors :将标记的STATA值转换为R因子。

    convert.dates: Convert STATA dates and times to Date and POSIXct.

    convert.dates :将STATA日期和时间转换为Date和POSIXct。

    missing.type:

    missing.type

    if FALSE, convert all types of missing values to NA.

    如果为FALSE,则将所有类型的缺失值转换为NA。

    if TRUE, store how values are missing in attributes.

    如果为TRUE,则存储属性中值的缺失方式。

    SPSS

    SPSS

    use.value.labels: Convert labeled STATA values to R factors.

    use.value.labels :将标记的STATA值转换为R因子。

    to.data.frame: Returns dataframe instead of list.

    to.data.frame :返回数据而不是列表。

    结论 (Conclusion)

    That’s about importing basic data into R. Loading the data is the first step in any process like analysis, visualization, and manipulation.

    那就是将基本数据导入R。加载数据是任何过程(如分析,可视化和操作)的第一步。

    These are the plethora of methods available to import data into R.

    这些是可用于将数据导入R的过多方法。

    I predominantly use read_excel and read_csv.

    我主要使用read_excel和read_csv。

    What do you use? Comment it down.

    你用什么? 评论一下。

    Thanks for reading!

    谢谢阅读!

    翻译自: https://towardsdatascience.com/different-ways-of-importing-data-into-r-2d234e8e0dec

    rstudio导入数据

    展开全文
  •  全球数据导入工作非常耗时,也很容易出错,吸取前面N次的教训,在开始之前,打好预防针,主要有:  a) 稳定的64位环境   先前的博客中,2009年的数据集合还能运行在32位虚拟机中,201

       2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置过程。

    1、预防针

        全球数据导入工作非常耗时,也很容易出错,吸取前面N次的教训,在开始之前,打好预防针,主要有:

        a) 稳定的64位环境 

        先前的博客中,2009年的数据集合还能运行在32位虚拟机中,2012年20GB的原始数据压缩文件展开后占用200GB以上的磁盘,光是ID一列字段就盛满4G的空间,显然32位是不行了。这次采用16GBwindows Server 、16核心盘阵服务器,2TB磁盘空间,VMBox虚拟机8GB内存以期资源充足。


       b) UPS电力供应+工作状态保护 

        由于数据导入过程可能长达1-4周,为了吸取长时间断电即使UPS也挂了的惨痛教训,本次在Windows Server 2003 64bit + Oracle VirtualBox 4.18 下进行导入工作,以便在断电时,利用UPS的有限时间进行snapshot,而后休眠,以保证导入工作不被干扰。如果不使用虚拟机,直接使用系统的休眠,osm2pgsql与postgis  的 TCP连接有可能被重置(当你使用外部地址而不是localhost时),照样会挂。


      c) 质量过关的磁盘

        在中等内存容量下,采用slim模式导入,将面对持续数周的密集磁盘访问,采用盘阵速度较快,且容错保护好。以前出现过使用单块硬盘,读写了4周(3周导入,1周渲染),硬盘噪音超大,没用一年就挂了的惨痛经历。



    2、最终目的

          完整导入全球Planet.OSM数据集,并编译、配置最新的Mapnik渲染器;采用最新的apache2+ mod_tile rended 搭建WebService;采用OpenLayers 实现 SlippyMap;利用GeoServer + OpenLayers +PostGIS叠加显示动态矢量数据。

    好了,下面开始第一篇,也是万事开头难,痛苦的数据导入过程。

    ------------------------------------------------------


    本次,既然有8GB内存,就不在乎图形界面耗费的一两百MB了,使用Linux-Mint 13 64bit 作为基础平台,操作性好,利于安装eclipse、QT, code-blocks 等IDE进行开发实践。

    <0>专门找一台机器,全天下载全球数据文件,这一步在国内网速不好时,太要命了。用BT也不是太好,大家酌情考虑自己的方式。

          访问http://download.geofabrik.de/osm/ 下载感兴趣区域的数据,全球的直接google   Planet.osm ,到wiki的链接FTP去下载(暴慢),或者去http://osm-torrent.torres.voyager.hr/files/  去下载PBF种子(我的网速下,好不了哪去),这一步会花费好多天。osm.bz2格式的要比PBF大好多,导入的时候慢好多,建议能用就用 pbf的。如果使用PBF, 后面编译 osm2pgsql时,需要libprotobuf-c0-dev 和protobuf-c-compiler两个库,否则会不认。

         我这次是先下个中国的pbf,60MB,导入供功能测试,等到后面下完了,再导入全球的。


    <1>安装PostgreSQL

    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get install postgresql
    sudo apt-get install postgresql-9.1-postgis postgresql-contrib-9.1 postgresql-server-dev-9.1
    sudo apt-get install libpq-dev
    当然,也可以直接在X下新立得软件管理器中安装,顺便把pgAdminIII 给安上

    下面进行配置。


    <2>更改Linux  用户和PostgreSQL 的用户密码,创建用于数据访问的用户

    为了用自己的postgres账户在 pgAdminIII中登录,以及远程访问数据库,我们要修改postgres的管理员密码 

    sudo passwd postgres

    输入两遍自己的密码, 就更改了Linux下用户postgres的口令。而后,在数据库中修改 postgres 的密码,一般与上面操作系统中postgres用户的密码取一致。

    sudo su postgres
    
    psql -dpostgres
    
    ALTER USER postgres WITH PASSWORD '你的密码';

    为了安全,创建一个用户,用于数据访问。为了和后面渲染契合,用户名 www-data,分别在console以及psql下执行:

    sudo passwd www-data
    在psql或者pgAminIII 中
    CREATE ROLE "www-data" LOGIN
      PASSWORD '你想设置给www-data的密码'
      SUPERUSER INHERIT CREATEDB NOCREATEROLE REPLICATION;

    <3>adminPack 安装

         如果安装了pgAdminIII,则会提示您没有安装服务器端adminpack,postgresql 9.1下,这个东西不再是 contrb,而是“扩展”extension,直接点击“修复repair”或执行

    create extension adminpack;

    以安装服务器管理员拓展包,否则,很多pgAdmin的功能用不了。


    <4>建立PostGIS数据库

    首先,我们要在2TB的分区文件夹下建立表空间。本例中, 2TB分区位于 /hugecargo

    cd /hugecargo
    sudo mkdir pgtbs_osmgis
    sudo chown postgres ./pgtbs_osmgis
    而后,在psql或者pgAdmin下创建表空间

    CREATE TABLESPACE pgtbs_osmgis
      OWNER "www-data"
      LOCATION '/hugecargo/pgtbs_osmgis';

    接着,创建数据库。由于中文Mint 下,postgresql默认采用 zh_cn.UTF-8 locale, 这种字符排序对后面的导入工作会造成一定的麻烦,保险起见,采用Locale "C"

    CREATE DATABASE osmgis
      WITH OWNER = "www-data"
           ENCODING = 'UTF8'
           TABLESPACE = pgtbs_osmgis
           LC_COLLATE = 'C'
           LC_CTYPE = 'C'
           CONNECTION LIMIT = -1;
    GRANT ALL ON DATABASE osmgis TO public;
    GRANT ALL ON DATABASE osmgis TO "www-data";
    添加 postgis 功能,以及hstore(类似C++的map)。

    sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql"
    sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql"
    sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis_comments.sql"
    sudo su postgres
    psql -dosmgis
    create extension hstore
    这样,postgis数据库就建立好了。


    <5> 对postgresql性能进行优化

    首先,编辑 /etc/postgresql/9.1/main/postgresql.conf

    sudo nano /etc/postgresql/9.1/main/postgresql.conf

    修改缓存,关闭自动资源释放,否则,等着导入的时候硬盘over吧!

    shared_buffers = 256MB
    checkpoint_segments = 20
    maintenance_work_mem = 256MB
    autovacuum = off
    小内存机器,不要设置太大。

    shared_buffers = 128MB

    注意,把前面的"#"去掉,否则那一行只是注释而已,我这个粗心鬼不止一次忘了。

    而后,要同步修改系统的最大共享内存数

    sudo nano /etc/sysctl.conf

    在尾部补上

    #128MB shared_buffer对应256MB shmmax 
    kernel.shmmax=268435456 
    #256MB shared_buffer对应512MB 
    shmmax kernel.shmmax=536870912

    最后,重启机器,确定postgresql服务运行正常,就ok了。


    至此,postgresql设置完毕。

    ----------------------------------------- 


    <6> 编译支持pbd文件格式的 osm2pgsql 

    为了导入数据,需要osm2pgsql这个工具。安装一些依赖

    sudo apt-get install subversion git-core tar unzip wget bzip2 
    sudo apt-get install build-essential autoconf libtool libxml2-dev libgeos-dev libbz2-dev 
    sudo apt-get install proj munin-node munin libprotobuf-c0-dev protobuf-c-compiler 
    sudo apt-get install libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libboost-all-dev 
    sudo apt-get install libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev

    我在自己的文档文件夹下建立bin, src  两个文件夹,bin用于存放直接运行的程序,src用于存放编译后 make install 到系统路径中的程序。

    mkdir ~/src
    mkdir ~/bin
    cd ~/bin
    svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/

    而后,进入目录,编译

    cd osm2pgsql
    ./autogen.sh
    ./configure
    make
    sudo make install

    就ok了

    请注意一下configure的时候,有没有提示protobuf 是yes,是的话,才能认 pbf文件,从而节约大量的下载时间(pbf比 osm.bz2小了7-8个GB)


    <7> 开始导入测试用中国数据 (全球数据最后一步导入,那是去和老板请假休息的时候)

    准备好后,直接运行

    ./osm2pgsql -dosmgis -s -S"./default.style" -C384 -Uwww-data -W -Hlocalhost -v ~/downloaded/china.osm.pbf

    即可导入。china.osm.pbf 的数据导入很快。


    -----------------------------------

    本文就到这里,现在,我们有了基础的数据。下一篇,我们开始配置 mapnik2 渲染器,以及 apache-mod_tile + renderd 组成的WMS服务器。 

    展开全文
  • 机器学习】机器学习数据集大全

    千次阅读 2018-07-27 15:24:15
    下面,您将找到一个由用户组织的数据科学和机器学习免费数据集的策划列表。您将找到精选的数据集和我们最喜欢的聚合器。 目录 ...Web Scraping的数据集 当前事件的数据集   探索性分析的数...

    下面,您将找到一个由用户组织的数据科学和机器学习免费数据集的策划列表。您将找到精选的数据集和我们最喜欢的聚合器。

    目录

    探索性分析的数据集

    通用机器学习的数据集

    深度学习数据集

    自然语言处理的数据集

    云计算机学习的数据集

    时间序列分析的数据集

    推荐系统的数据集

    特定行业的数据集

    流式传输的数据集

    Web Scraping的数据集

    当前事件的数据集

     

    探索性分析的数据集

    探索性分析是大多数数据科学练习的第一步。实践探索性分析的最佳数据集应该是有趣的,有趣的和非平凡的(即需要您挖掘一点来揭示所有的见解)。

    所有链接都在新标签中打开。

    我们的选择:

    • 权力的游戏 - 权力的游戏是一个流行的电视连续剧,基于乔治RR马丁的  系列。使用此数据集,您可以探索其政治格局,角色和战斗。
    • 世界大学排名 - 排名大学可能很困难,也很有争议。有数百个排名系统,他们很少达成共识。该数据集包含三个全球大学排名。
    • IMDB 5000电影数据集 - 该数据集探讨了在电影发布之前我们是否可以预测电影的受欢迎程度的问题。

    聚合器:

    • Kaggle数据集 - 由Kaggle社区提供的开放数据集。在这里,你会找到一个主题的抓包。另外,您可以从数据集附带的简短教程和脚本中学习。
    • r / datasets - 由Reddit社区提供的开放数据集。这是有趣和古怪的数据集的另一个来源,但数据集往往不那么精致。

     

    通用机器学习的数据集

    在这种情况下,我们将“一般”机器学习称为回归,分类和具有关系(即表格式)数据的聚类。这些是最常见的ML任务。

    我们的选择:

    聚合器:

    • UCI机器学习存储库 - UCI ML存储库是机器学习数据集的一种古老且流行的聚合器。提示:他们的大多数数据集都链接了可用于基准测试的学术论文。

     

    深度学习数据集

    虽然不适合通用机器学习,但深度学习一直主导某些利基,特别是那些使用图像,文本或音频数据的利基。根据我们的经验,开始深度学习的最佳方法是练习图像数据,因为有丰富的教程。

    我们的选择:

    • MNIST - MNIST包含用于手写数字分类的图像。它被认为是深度学习的一个很好的入门数据集,因为它足够复杂以保证神经网络,同时仍然可以在单个CPU上进行管理。(我们也有一个教程。
    • CIFAR - 难度的下一步是CIFAR-10数据集,其中包含分为10个不同类的60,000个图像。对于更大的挑战,您可以尝试CIFAR-100数据集,该数据集有100个不同的类。
    • ImageNet - ImageNet每年举办一次计算机视觉竞赛,许多人认为它是现代表演的基准。当前图像数据集有1000个不同的类。
    • YouTube 8M - 准备处理视频,但无法节省数TB的存储空间?此数据集包含使用最新深度学习模型预先提取的数百万YouTube视频ID和数  十亿 的音频和视觉功能。

    聚合器:

    • Deeplearning.net - 用于对深度学习算法进行基准测试的最新数据集列表。
    • DeepLearning4J.org - 用于深度学习研究的高质量数据集的最新列表。

    YouTube-8M数据集

    YouTube的-8M

     

    自然语言处理的数据集

    自然语言处理(NLP)是关于文本数据的。对于像文本这样的混乱数据,对于数据集来说,拥有真实世界的应用程序尤为重要,这样您就可以进行简单的健全性检查。

    我们的选择:

    • 安然数据集  - 安然高级管理层的电子邮件数据,组织成文件夹。该数据集最初公布,并在联邦能源监管委员会调查期间发布到网上。
    • 亚马逊评论 - 包含来自亚马逊的约3500万条评论,涵盖18年。数据包括产品和用户信息,评级和明文审核。
    • 新闻组分类 - 收集大约20,000个新闻组文档,在20个不同的新闻组中平均分配(几乎)。非常适合练习文本分类和主题建模。

    聚合器:

     

    云计算机学习的数据集

    从技术上讲,如果您只是将数据集上传到云端,那么任何数据集都可用于基于云的机器学习。但是,如果您刚开始并评估平台,则可能希望跳过所有数据管道。

    幸运的是,主要的云计算服务都提供了您可以轻松导入的公共数据集。他们的数据集都具有可比性。

    我们的选择:

     

    时间序列分析的数据集

    时间序列分析需要标记时间戳的观察。换句话说,跨时间跟踪每个主题和/或特征。

    我们的选择:

    • EOD股票价格 - 由Quandl社区策划的3,000家美国公司的股票价格,股息和分割结束。
    • Zillow房地产研究 - 按大小,类型和等级划分的房屋价格和租金,按邮政编码,社区,城市,都市区,县和州划分。
    • 全球教育统计 - 超过4,000个国际可比指标,用于教育获取,升级,完成,扫盲,教师,人口和支出。

    聚合器:

    • Quandl - Quandl包含用于财务分析的免费和高级时间序列数据集。
    • 世界银行 - 包含全球宏观经济时间序列,可按国家或指标搜索。

    Zillow房地产数据

    Zillow房地产数据

     

    推荐系统的数据集

    推荐系统已经风靡娱乐和电子商务行业。亚马逊,Netflix和Spotify都是很好的例子。

    我们的选择:

    • MovieLens  - 来自MovieLens网站的评级数据集。由于可用的各种数据集大小,非常适合入门。
    • Jester - 构建简单协作过滤器的理想选择。包含来自73,421个用户的100个笑话的410万连续收视率(-10.00到+10.00)。
    • Million Song Dataset - 用于音乐推荐的大型丰富数据集。您可以从纯协作过滤器开始,然后使用其他方法(如基于内容的模型或Web抓取)对其进行扩展。

    聚合器:

    • entaroadun(Github) - 推荐系统的数据集集合。提示:查看评论部分以获取最新数据集。

     

    特定行业的数据集

    在这个纲要中,我们根据用例组织了数据集。如果您需要练习某种技能,例如深度学习或时间序列分析,这将非常有用。

    但是,您可能还希望按特定行业进行搜索,例如神经科学,天气或制造的数据集。以下是几个选项:

    聚合器:

     

    流式传输的数据集

    流数据集用于构建实时应用程序,例如数据可视化,趋势跟踪或可更新(即“在线”)机器学习模型。

    我们的选择:

    • Twitter API - twitter API是流数据的经典来源。您可以跟踪推文,主题标签等。
    • StockTwits API - StockTwits就像是交易者和投资者的推特。您可以通过使用时间戳和股票代码符号将其连接到时间序列数据集,以许多有趣的方式扩展此数据集。
    • 天气地下 - 全球覆盖的可靠天气API。提供免费套餐和付费选项以扩大规模。

    聚合器:

    • Satori - Satori是一个平台,可让您以超低延迟(免费)连接流媒体直播数据。他们经常添加新的数据集。

     

    Web Scraping的数据集

    网络抓取是数据科学研究的一个常见部分,但您必须小心违反网站的服务条款。幸运的是,有一个完整的网站可以自由地抓取。

    我们的选择:

    ToScrape书店

    虚构的书店

     

    当前事件的数据集

    查找当前事件的数据集可能很棘手。幸运的是,一些出版物已经开始发布他们在文章中使用的数据集。

    聚合器:

    • FiveThirtyEight - FiveThirtyEight是一个包含数据驱动文章的新闻和体育网站。他们在Github上公开提供他们的数据集。
    • BuzzFeedNews - BuzzFeed因其列表和肤浅的作品而闻名,但他们已经扩展到调查性新闻。他们的数据集可在Github上获得。

     

    原文:https://elitedatascience.com/datasets

    展开全文
  • JanusGraph批量导入数据优化

    千次阅读 2019-07-10 15:25:37
    批量导入工具: ... 批量导入配置项 storage.batch-loading =true ... 导入数据必须具有...(比如:name数据是具有唯一索引(a unique composite index),那么导入数据在name属性上上和已有的数据不能重复) ...

    批量导入工具:

    https://github.com/dengziming/janusgraph-util

    批量导入配置项

    storage.batch-loading =true
    
    • 导入的数据必须具有一致性并且和已存在的数据必须具有一致性。(比如:name数据是具有唯一索引(a unique composite index),那么导入的数据在name属性上上和已有的数据不能重复)

    • 下面是优化配置,优化的目的,就是减少批量导入时间。

    ID 分配优化

    ID Block Size

    ids.block-size
    
    • 配置项,JanusGraph实例通过id池管理对象从id blocks中获取ids值为新加入的vertex、edge分配唯一id,为了保证库唯一性,所以获取id block(id块)是昂贵的(因为存在多个实例竞争),所以增加block-size可以减少获取block的次数,但是值过大会导致多余的id被浪费掉。
    • 一般情况下事务的负载,ids.block-size的默认值是满足要求的。但是对于批量导入时,需要调节值为每个JanusGraph实例需要添加节点和边数的10倍。
    • 该配置项在集群中所有实例上值必须唯一。

    ID Acquisition Process

    1) ids.authority.wait-time
    
    • 配置毫秒:id池管理器允许id block获取程序最大允许等待时间,时间到还未获取到就失败。建议值设置为存储后端第95%时读写时间之和。
    • 该配置在集群上要设置统一值。
    2) ids.renew-timeout
    
    • 在失败获取id block后,id池管理程序等待多少毫秒后再次发起一个新的尝试。尽可能大。

    读写优化

    Buffer Size

    storage.buffer-size  缓存大小
    
    • JanusGraph会缓存写操作,然后批量发送到后端执行。这样可以减少请求次数,从而避免短时间内执行服务器写请求过多导致的失败。
    • 如果缓存设置太大,会增加写延迟因此会增加执行失败的可能性。
    • 建议:谨慎设置该值。

    Read and Write Robustness

    • 如果存储后端的写或读操作失败后(storage.buffer-size 太大会增加失败的可能性),将会重试多少次才会放弃。
    storage.read-attempts   读尝试的次数
    storage.write-attempts  写尝试次数
    storage.attempt-wait  :两次尝试之间的时间间隔,在批量导入情况下,此值可以设置大一些
    

    策略

    Parallelizing the Load

    • 如果存储后端可以可承受足够的请求,那么可以在多个机器上并行批量导入,可以减少导入时间。
    • Chapter 35, JanusGraph with TinkerPop’s Hadoop-Gremlin 通过MapReduce批量导入数据。
    • 如果不使用Hadoop,则可以将大图拆分成小图并行导入。
    • 如果图不可以被拆分,那么可以将顶点和边分开并行导入。

    使用操作:

    基本配置

    1. 首先从官网下载并解压janusgraph到本地/data/janusgraph/目录。
    2. 然后配置图数据库前后端。由于我们用的是es + hbase, 所以直接修改/data/janusgraph/conf/janusgraph-hbase-es.properties :
    #重要
    gremlin.graph=org.janusgraph.core.JanusGraphFactory
    #hbase配置
    storage.batch-loading=true
    storage.backend=hbase
    storage.hostname=c1-nn1.bdp.idc,c1-nn2.bdp.idc,c1-nn3.bdp.idc
    storage.hbase.ext.hbase.zookeeper.property.clientPort=2181
    storage.hbase.table = yisou:test_graph
    #es配置
    index.search.backend=elasticsearch
    index.search.hostname=10.120.64.69  #es是只安装在本地,此为本机ip。
    index.search.elasticsearch.client-only=true
    index.search.index-name=yisou_test_graph
    #默认cache配置
    cache.db-cache = true
    cache.db-cache-clean-wait = 20
    cache.db-cache-time = 180000
    cache.db-cache-size = 0.5
    

    3.修改/data/janusgraph/lib下的jar包。由于在跑yarn-client批量导入时有guava等jar包冲突,我根据冲突情况对lib下面的jar包作了调整。主要调整了3个jar包:

    1. hbase-client-1.2.4.jar ==> yisou-hbase-1.0-SNAPSHOT.jar
      由于lib下的hbase-client-1.2.4.jar用的guava与我们yarn集群的guava版本有冲突,所以我们用了公司内部的去除了guava的hbase-client,即yisou-hbase-1.0-SNAPSHOT.jar 。
      如果不替换,报错 "Caused by: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator"
    2. spark-assembly-1.6.1-hadoop2.6.0.jar ==> spark-assembly-1.6.2-hadoop2.6.0.jar
      lib自带的spark-assembly-1.6.1-hadoop2.6.0.jar也会引起guava冲突,我将其替换成spark-assembly-1.6.2-hadoop2.6.0.jar。
      如果不替换,将会报错"java.lang.NoSuchMethodError: groovy.lang.MetaClassImpl.hasCustomStaticInvokeMethod()Z"
    3. 删除 hbase-protocol-1.2.4.jar.
      如果不删除,将会报错 "com.google.protobuf.ServiceException: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.protobuf.generated.RPCProtos$ConnectionHeader$Builder.setVersionInfo(Lorg/apache/hadoop/hbase/protobuf/generated/RPCProtos$VersionInfo;)Lorg/apache/hadoop/hbase/protobuf/generated/RPCProtos$ConnectionHeader$Builder;"

    4.配置图中边和节点属性,具体参考官网,本文不展开。

    批量导入配置

    由于需要与yarn配合,将导入程序放在yarn上执行,所以需要hadoop相关环境配置。需要修改两个配置文件,一个是Janusgraph的启动脚本/data/janusgraph/lib/gremlin.sh, 另一个是hadoop和spark相关的配置/data/janusgraph/conf/hadoop-graph/hadoop-script.properties。

    1.复制/data/janusgraph/lib/gremlin.sh, 假定命名为yarn-gremlin.sh。 然后增加hadoop的配置到JAVA_OPTIONS和CLASSPATH中。这样能保证hadoop相关配置能被程序读取到,便于正常启动spark在yarn上的任务。

    #!/bin/bash
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export HADOOP_HOME=/usr/local/hadoop-2.7.1
    export JAVA_OPTIONS="$JAVA_OPTIONS -Djava.library.path=$HADOOP_HOME/lib/native"
    export CLASSPATH=$HADOOP_CONF_DIR
    #JANUSGRAPH_HOME为用户安装janusgraph的目录/data/janusgraph/
    cd $JANUSGRAPH_HOME
    ./bin/gremlin.sh
    

    2.修改/data/janusgraph/conf/hadoop-graph/hadoop-script.properties
    主要根据要导入文件的格式修改inputFormat、指定要导入的hdfs文件路径、parse函数路径以及spark master指定为yarn-client等。

    #
    # Hadoop Graph Configuration
    #
    gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
    gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptInputFormat
    gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat
    gremlin.hadoop.jarsInDistributedCache=true
    
    #导入文件的hdfs路径。也可以在加载该配置文件后指定
    gremlin.hadoop.inputLocation=/user/yisou/taotian1/janus/data/fewData.test.dup
    #解析hdfs文件的parse函数路径。也可以在加载该配置文件后指定
    gremlin.hadoop.scriptInputFormat.script=/user/yisou/taotian1/janus/data/conf/vertex_parse.groovy
    #gremlin.hadoop.outputLocation=output
    
    #
    # SparkGraphComputer with Yarn Configuration
    #
    spark.master=yarn-client
    spark.executor.memory=6g
    spark.executor.instances=10
    spark.executor.cores=2
    spark.serializer=org.apache.spark.serializer.KryoSerializer
    # spark.kryo.registrationRequired=true
    # spark.storage.memoryFraction=0.2
    # spark.eventLog.enabled=true
    # spark.eventLog.dir=/tmp/spark-event-logs
    # spark.ui.killEnabled=true
    
    #cache config
    gremlin.spark.persistContext=true
    gremlin.spark.graphStorageLevel=MEMORY_AND_DISK
    #gremlin.spark.persistStorageLevel=DISK_ONLY
    
    
    #####################################
    # GiraphGraphComputer Configuration #
    #####################################
    giraph.minWorkers=2
    giraph.maxWorkers=3
    giraph.useOutOfCoreGraph=true
    giraph.useOutOfCoreMessages=true
    mapred.map.child.java.opts=-Xmx1024m
    mapred.reduce.child.java.opts=-Xmx1024m
    giraph.numInputThreads=4
    giraph.numComputeThreads=4
    # giraph.maxPartitionsInMemory=1
    # giraph.userPartitionCount=2
    

    执行批量导入

    启动命令:

    sh /data/janusgraph/lib/yarn-gremlin.sh
    

    批量导入命令:

    local_root="/data/janusgraph"
    hdfs_root="/user/yisou/taotian1/janus"
    social_graph="${local_root}/conf/janusgraph-hbase-es.properties"
    graph = GraphFactory.open("${local_root}/conf/hadoop-script.properties")
    graph.configuration().setProperty("gremlin.hadoop.inputLocation","/user/yisou/taotian1/janus/data/fewData.test.dup")
    graph.configuration().setProperty("gremlin.hadoop.scriptInputFormat.script", "${hdfs_root}/conf/vertex_parse.groovy")
    blvp = BulkLoaderVertexProgram.build().writeGraph(social_graph).create(graph)
    graph.compute(SparkGraphComputer).program(blvp).submit().get()
    

    运行结果:

    sh /data/janusgraph/lib/yarn-gremlin.sh
    \,,,/
    (o o)
    -----oOOo-(3)-oOOo-----
    plugin activated: janusgraph.imports
    plugin activated: tinkerpop.server
    plugin activated: tinkerpop.utilities
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/data2/janusgraph-0.1.1-hadoop2/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/data2/janusgraph-0.1.1-hadoop2/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/data2/janusgraph-0.1.1-hadoop2/lib/spark-assembly-1.6.2-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/data2/janusgraph-0.1.1-hadoop2/lib/yisou-hbase-1.0-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    21:22:00,392  INFO HadoopGraph:87 - HADOOP_GREMLIN_LIBS is set to: /data2/janusgraph-0.1.1-hadoop2/lib
    plugin activated: tinkerpop.hadoop
    plugin activated: tinkerpop.spark
    plugin activated: tinkerpop.tinkergraph
    gremlin>
    gremlin> local_root="/data2/janusgraph-0.1.1-hadoop2/social"
    ==>/data2/janusgraph-0.1.1-hadoop2/social
    gremlin> hdfs_root="/user/yisou/taotian1/janus"
    ==>/user/yisou/taotian1/janus
    gremlin> social_graph="${local_root}/conf/janusgraph-hbase-es-social.properties"
    ==>/data2/janusgraph-0.1.1-hadoop2/social/conf/janusgraph-hbase-es-social.properties
    gremlin> graph = GraphFactory.open("${local_root}/conf/hadoop-yarn.properties")
    ==>hadoopgraph[scriptinputformat->graphsonoutputformat]
    gremlin> graph.configuration().setProperty("gremlin.hadoop.inputLocation","/user/yisou/taotian1/janus/tmp1person/")
    ==>null
    gremlin> graph.configuration().setProperty("gremlin.hadoop.scriptInputFormat.script", "${hdfs_root}/person_parse.groovy")
    ==>null
    gremlin> blvp = BulkLoaderVertexProgram.build().writeGraph(social_graph).create(graph)
    ==>BulkLoaderVertexProgram[bulkLoader=IncrementalBulkLoader, vertexIdProperty=bulkLoader.vertex.id, userSuppliedIds=false, keepOriginalIds=true, batchSize=0]
    gremlin> graph.compute(SparkGraphComputer).program(blvp).submit().get()
    21:25:04,666  INFO deprecation:1173 - mapred.reduce.child.java.opts is deprecated. Instead, use mapreduce.reduce.java.opts
    21:25:04,667  INFO deprecation:1173 - mapred.map.child.java.opts is deprecated. Instead, use mapreduce.map.java.opts
    21:25:04,680  INFO KryoShimServiceLoader:117 - Set KryoShimService provider to org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolShimService@4cb2918c (class org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolShimService) because its priority value (0) is the highest available
    21:25:04,680  INFO KryoShimServiceLoader:123 - Configuring KryoShimService provider org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolShimService@4cb2918c with user-provided configuration
      21:25:10,479  WARN SparkConf:70 - The configuration key 'spark.yarn.user.classpath.first' has been deprecated as of Spark 1.3 and may be removed in the future. Please use spark.{driver,executor}.userClassPathFirst instead.
    21:25:10,505  INFO SparkContext:58 - Running Spark version 1.6.2
    21:25:10,524  WARN SparkConf:70 - The configuration key 'spark.yarn.user.classpath.first' has been deprecated as of Spark 1.3 and may be removed in the future. Please use spark.{driver,executor}.userClassPathFirst instead.
    21:25:10,564  INFO SecurityManager:58 - Changing view acls to: yisou
    21:25:10,565  INFO SecurityManager:58 - Changing modify acls to: yisou
    21:25:10,566  INFO SecurityManager:58 - SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(yisou); users with modify permissions: Set(yisou)
    21:25:10,833  WARN SparkConf:70 - The configuration key 'spark.yarn.user.classpath.first' has been deprecated as of Spark 1.3 and may be removed in the future. Please use spark.{driver,executor}.userClassPathFirst instead.
    21:25:10,835  WARN SparkConf:70 - The configuration key 'spark.yarn.user.classpath.first' has been deprecated as of Spark 1.3 and may be removed in the future. Please use spark.{driver,executor}.userClassPathFirst instead.
    21:25:11,035  INFO Utils:58 - Successfully started service 'sparkDriver' on port 36502.
    21:25:11,576  INFO Slf4jLogger:80 - Slf4jLogger started
      21:25:11,646  INFO Remoting:74 - Starting remoting
    ............
    21:25:20,736  INFO Client:58 - Submitting application 2727164 to ResourceManager
    21:25:20,771  INFO YarnClientImpl:273 - Submitted application application_1466564207556_2727164
    21:25:21,780  INFO Client:58 - Application report for application_1466564207556_2727164 (state: ACCEPTED)
    21:25:21,785  INFO Client:58 -
    client token: N/A
    diagnostics: N/A
    ApplicationMaster host: N/A
    ApplicationMaster RPC port: -1
    queue: root.yisou
    start time: 1500297920750
    final status: UNDEFINED
    tracking URL: http://c1-nn3.bdp.idc:8981/proxy/application_1466564207556_2727164/
    21:25:22,787  INFO Client:58 - Application report for application_1466564207556_2727164 (state: ACCEPTED)
    21:25:23,789  INFO Client:58 - Application report for application_1466564207556_2727164 (state: ACCEPTED)
    21:25:24,791  INFO Client:58 - Application report for application_1466564207556_2727164 (state: ACCEPTED)
    21:25:25,793  INFO Client:58 - Application report for application_1466564207556_2727164 (state: ACCEPTED)
    21:25:39,585  INFO JettyUtils:58 - Adding filter: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
    21:25:39,823  INFO Client:58 - Application report for application_1466564207556_2727164 (state: RUNNING)
    21:25:39,824  INFO Client:58 -
    client token: N/A
    diagnostics: N/A
    ApplicationMaster host: 10.130.1.50
    ApplicationMaster RPC port: 0
    queue: root.yisou
    start time: 1500297920750
    final status: UNDEFINED
    tracking URL: http://c1-nn3.bdp.idc:8981/proxy/application_1466564207556_2727164/
    ..........
    21:25:42,864  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/commons-codec-1.7.jar at http://10.130.64.69:38209/jars/commons-codec-1.7.jar with timestamp 1500297942864
    21:25:42,866  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/commons-lang-2.5.jar at http://10.130.64.69:38209/jars/commons-lang-2.5.jar with timestamp 1500297942866
    21:25:42,869  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/commons-collections-3.2.2.jar at http://10.130.64.69:38209/jars/commons-collections-3.2.2.jar with timestamp 1500297942869
    21:25:42,872  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/commons-io-2.3.jar at http://10.130.64.69:38209/jars/commons-io-2.3.jar with timestamp 1500297942872
    21:25:42,874  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/jetty-util-6.1.26.jar at http://10.130.64.69:38209/jars/jetty-util-6.1.26.jar with timestamp 1500297942874
    21:25:42,879  INFO SparkContext:58 - Added JAR /data2/janusgraph-0.1.1-hadoop2/lib/htrace-core-3.1.0-incubating.jar at http://10.130.64.69:38209/jars/htrace-core-3.1.0-incubating.jar with timestamp 1
    ............
    21:26:14,751  INFO MapOutputTrackerMaster:58 - Size of output statuses for shuffle 2 is 146 bytes
    21:26:14,767  INFO TaskSetManager:58 - Finished task 0.0 in stage 6.0 (TID 4) in 40 ms on c1-dn31.bdp.idc (1/1)
    21:26:14,767  INFO YarnScheduler:58 - Removed TaskSet 6.0, whose tasks have all completed, from pool
    21:26:14,767  INFO DAGScheduler:58 - ResultStage 6 (foreachPartition at SparkExecutor.java:173) finished in 0.042 s
    21:26:14,768  INFO DAGScheduler:58 - Job 1 finished: foreachPartition at SparkExecutor.java:173, took 1.776125 s
    21:26:14,775  INFO ShuffledRDD:58 - Removing RDD 2 from persistence list
    21:26:14,785  INFO BlockManager:58 - Removing RDD 2
    ==>result[hadoopgraph[scriptinputformat->graphsonoutputformat],memory[size:0]]
    gremlin> 21:26:22,515  INFO YarnClientSchedulerBackend:58 - Registered executor NettyRpcEndpointRef(null) (c1-dn9.bdp.idc:60762) with ID 8
    

    批量导入性能优化

    如果不做优化,janusgraph批量导入的速度非常慢,导入4千万条数据大约需要3.5小时。优化后可降低到1小时.
    1.加大ids.block-size和storage.buffer-size参数的大小(在janusgraph-hbase-es.properties中配置)。
    ids.block-size=100000000
    storage.buffer-size=102400

    2.指定hbase初始的region数目(在janusgraph-hbase-es.properties中配置)。
    storage.hbase.region-count = 50

    3.边和顶点同时导入,而不是顶点和边分成不同的文件,分开导入。格式可参考/data/janusgraph/data/grateful-dead.txt。

    总结

    本文主要讲解了janusgraph中如何配置yarn-client的方式批量导入节点和边。

    分为基本配置和批量导入的配置两部分,基本配置中需要注意janusgraph自带jar包与用户yarn环境中jar包的冲突问题,可替换或者删除相关jar包。

    批量导入配置中重点是在gremlin.sh中添加hadoop的相关配置,将hadoop环境配置到JAVA_OPTIONS和CLASSPATH中。

    参考链接

    Titan 数据库使用
    图数据库Titan在生产环境中的使用全过程+分析
    合并顶点和边,批量导入parse函数样例
    Yet Another Analytics & Intelligence Communication Series

     

    展开全文
  •  由于数据导入过程可能长达1-4周,为了吸取长时间断电即使UPS也挂了的惨痛教训,本次在Windows Server 2003 64bit + Oracle VirtualBox 4.18 下进行导入工作,以便在断电时,利用UPS的有限时间进行snapshot,而后...
  • poi导入excel数据思路

    千次阅读 2019-09-05 16:05:09
    1.实现思路 (1) 准备excel模板,减少... (2) 导入excel,返回错误Map,key是行数,value是对应的报错。 (3) 把错误列表生成excel,并返回url地址 (4) 前端通过返回的url地址,下载报错的excel 难点: 因没有...
  • 作为一个前端开发人员,经常会遇到一种情况就是 在后端接口没有出来之前,需要去mock数据,等待真实接口开发完后,替换成真实的接口,而在mock的过程中如果采用假数据的方式进行mock,一是增加无趣的工作量,二是...
  • Java大批量数据导入到Oracle…

    千次阅读 2013-11-05 15:46:58
    近来在做一些大批量数量导入数据库的操作,学习了一种简单的方式,与...我是利用JDBC自己的Batch操作来控制 插入条数 ,然后实现大批量快速导入数据:   下面是普通插入方式: public boolean insert(Code c) {  S
  • matlab导入excel代码utl_web_scraping_programatically_using_a_web_search_box_and_retrieve_information 使用网络搜索框以编程方式进行网络抓取并检索信息。 关键字:sas sql join合并大数据分析宏oracle teradata...
  • [转]维基百科数据导入

    千次阅读 2010-11-05 14:37:00
    本文来自:http://app.cnzer.cn/html-83146-1.html<br />  两篇文章分别总结了各自的wikipedia数据导入过程,来不及学习,故先转载: <br />  (一)wmdumper.jar <br />  from: GipSky...
  • 目的:将数据批量导入远程服务器 环境:SQL软件,EXCEL软件,VS2005软件,本地两个机器上都有SQL数据库,而且数据存放在其中一个表。 操作实践 1、用远程数据库的ip、用户名、密码在本地登录; 2、结果,其中一...
  • 机器学习数据集-MNIST

    万次阅读 2016-02-25 18:46:04
    介绍在学习机器学习的时候,首当其冲的就是准备一份通用的数据集,方便与其他的算法进行比较。在这里,我写了一个用于加载MNIST数据集的方法,并将其进行封装,主要用于将MNIST数据集转换成numpy.array()格式的训练...
  • 从零开始学习WEB前端之数据交互(Ajax)

    万次阅读 多人点赞 2017-04-14 17:32:23
    数据交互 ajax
  • power bi导入文件夹 Power BI Desktop is a useful reporting and analytical tool to represent data in various formats. These presentations help us to quickly understand information and circulate it to ...
  • 一、场景描述在智能设备(Smart Device)应用程序和智能客户端(Smart Client)应用程序的部署阶段,我们需要对离线数据进行初始化,即将后台数据库服务器中的一些数据导入到离线数据库中。通常采用两种方式对离线...
  • 机器学习数据集大全

    万次阅读 2018-07-30 15:01:46
    下面,您将找到一个由用户组织的数据科学和机器学习免费数据集的策划列表。您将找到精选的数据集和我们最喜欢的聚合器。   目录 探索性分析 通用机器学习 深度学习 自然语言处理 基于云的机器学习 时间序列...
  • 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统 微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计算机视觉系统,在...
  • java web项目中导入excel 到数据库

    万次阅读 热门讨论 2012-04-23 16:34:22
    导入数据" Class="listLink" > 导入数据   b.jsp:(先上传了文件,在对文件进行处理,避免服务器和客户端不是同一机器时出错) <title>My JSP 'dataSave.jsp' ...
  • R语言导入导出数据的几种方式总结

    万次阅读 多人点赞 2017-09-18 21:50:28
    关于R从不同数据导入数据的几种方式总结   导出: 对于某一数据集导出文件的方法 导出例子:write.csv(data_1,file = "d:/1111111111.csv") 其中data_1是你的数据集,file是你的存储路径和要存储...
  • 使用torchtext导入NLP数据

    千次阅读 2019-08-20 17:00:03
    如果你是pytorch的用户,可能你会很熟悉pytorch生态圈中专门预处理图像数据集的torchvision库。从torchtext这个名字我们也能大概猜到该库是pyt...
  • R:导入其他样式数据的方法

    千次阅读 2014-10-27 13:40:05
    导入XML数据  以XML格式编码的数据正在逐渐增多。R中有若干用于处理XML文件的包。由Duncan Temple Lang编写的XML包允许用户读取、写入和操作XML文件。  对使用R存取XML文档感兴趣的读者可以参阅:...
  • 上一篇已经完成了sqoop2的安装,本篇文章介绍sqoop2将数据从Oracle导入hdfs已经从hdfs导入Oracle 1、连接sqoop2服务 sqoop2是c/s模式,之前安装并启动的是sqoop的服务端,如果想要使用和操作sqoop2,需要通过客户端...
  • 导读:学习机器学习是一个不断探索和实验的过程,因此,本文将主要介绍常见的开源数据集,便于读者学习和实验各种机器学习算法。作者:张春强 张和平 唐振来源:大数据DT(ID:hzdashuj...
  • 基于ArcSDE 的Web前端海量数据展示

    千次阅读 2012-12-05 21:41:43
    问题:当海量数据要在WEB前端展示时,直接调用后台数据在前端展示所话费的时间是不能忍受的。本人在效果和速度的优化下,采用ArcSDE存储数据,将数据在后台处理好,按照某种规范直接一起返给WEB端,这样当用户加载...
  • 如何导入数据至Excel文件 C#.net

    千次阅读 2009-12-02 15:55:00
     如果Excel不需要合并单元格,没有太复杂的格式,将数据库表格数据导入到Excel中,有一个非常简单的办法: 1. 将数据读到DataTable对象中,然后绑定到一个ASP.NET的web控件DataGrid(可设置Visible为false)中 2....
  • 前不久,JetBrains团队发布了Datalore,这是一款基于云的web应用程序,用于构建机器学习模型并在Python中创建丰富的可视化。最新的测试版本旨在简化构建机器学习模型的流程,并帮助开发人员进行数据分析。由于...
  • matlab导入excel代码utl_web_scraping_top_cnn_stories 网站抓取CNN的热门故事。 关键字:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript...
  • matlab导入excel代码utl_web_scrape_23_separate_pages_one_per_state_for_all_whole_food_store_addresses Web刮取23个单独的页面,每个州一个页面,用于显示整个食品商店的所有地址。 关键字:sas sql join合并大...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,396
精华内容 20,558
关键字:

机器数据导入web