hfs-delimited and lfs-delimited

Hey guys,

I've pushed a snapshot update to Cascalog that includes two new taps -- hfs-delimited and lfs-delimited. These support the same keyword options as the other hfs-* and lfs-* taps, with a few extras I'll
detail below.

If any of you find these useful, I'd really appreciate it if you would give them a try and let me know how the API works out for you. This feature is available in either of the following builds:

[cascalog "1.8.7-SNAPSHOT"]
[cascalog "1.9.0-wip8"]

As an example, say you had a textfile with data like this:

exchange,stock_symbol,date,open,high,low,close,volume,adj
NYSE,AA,2008-03-05,37.01,37.9,36.13,36.6,17752400,36.6
NYSE,AA,2008-03-04,38.85,39.28,38.26,38.37,11279900,38.37

The default separator is a tab character, so the standard hfs-delimited tap with no options would produce 1-tuples with a single line of text:

(hfs-delimited "/path/to/file")
;; makes textlines

The ":delimiter" option allows you to change this:

(hfs-delimited "/pathto/data"
:delimiter ",")

;; produces 9-tuples, all strings

Now we have the problem of the header line getting in the way. :skip-header? to the rescue:

(hfs-delimited "/pathto/data"
:delimiter ","
:skip-header? true)

;; produces 9-tuples of strings

Next, if you include a vector of classes with the :classes keyword, the tap will do class conversions on the fields for you:

(hfs-delimited "/pathto/data"
:delimiter ","
:classes [String String String Float Float Float Float Integer Float]
:skip-header? true)

;; produces 9-tuples with the above classes -- numbers are parsed properly, strings stay strings.

Finally, by providing :outfields you gain the ability to select out specific fields by name:

(def stock-tap
(hfs-delimited "/pathto/data"
:delimiter ","
:outfields ["?exchange" "?stock-sym" "?date" "?open" "?high" "?low" "?close" "?volume" "?adj"]
:classes [String String String Float Float Float Float Integer Float]
:skip-header? true))

(select-fields stock-tap ["?stock-sym" "?open"])
;; returns 2-tuples of [String, Float] pairs representing the stock symbol and opening price for each line.

Looking forward to hearing your feedback! The API here will probably change a bit before release, so get your notes in now.

Cheers,

http://grokbase.com/t/gg/cascalog-user/123ky5apsx/new-taps-hfs-delimited-and-lfs-delimited

时间: 2024-12-28 16:57:05

hfs-delimited and lfs-delimited的相关文章

开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式

原文:[原创]开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式  开源Math.NET基础数学类库使用系列文章总目录:    1.开源.NET基础数学计算组件Math.NET(一)综合介绍     2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算    3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式   4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据

【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式

               本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 上一篇文章,我们介绍了使用C#读写Matlab的Mat数据格式和通用的Matrix Market数据格式.今天还要介绍一个Math.NET读取Delimited Formats数据格式的例子.Delimited Formats(也称DSV) 数据格式也是一种比较常见的数据存储和交换格式,和CSV格式

《Linux From Scratch》第三部分:构建LFS系统 第七章:基本系统配置- 7.3. LFS 系统中的设备和模块管理

 在 第六章, 我们通过 systemd 的源码包安装好了 udev.在开始了解它是如何工作之前,我们先来简要的回顾下以前处理设备的方法. 传统的 Linux 不管硬件是否真实存在,都以创建静态设备的方法来处理硬件,因此需要在 /dev 目录下创建大量的设备节点文件(有时会有上千个).这通常由 MAKEDEV 脚本完成,它通过大量调用 mknod 程序为这个世界上可能存在的每一个设备建立对应的主设备号和次设备号. 而使用 udev 方法,只有当内核检测到硬件接入,才会建立对应的节点文件.因为需要

《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.17. GCC-4.9.2

             GCC 软件包包括 GNU 编译器集,其中有 C 和 C++ 的编译器. 大概编译时间: 63 SBU (包括测试) 需要磁盘空间: 2.9 GB 6.17.1. 安装 GCC GCC 的文档建议在源代码目录之外一个专用的编译目录中编译 GCC: mkdir -v ../gcc-build cd ../gcc-build 准备编译 GCC: SED=sed \ ../gcc-4.9.2/configure \ --prefix=/usr \ --enable-langu

《Linux From Scratch》第三部分:构建LFS系统 第八章:让LFS系统可引导 - 8.4. 使用 GRUB 设置启动过程

 8.4.1. 简介 警告 对 GRUB 进行错误的配置可能会导致在没有外置启动设备(某些USB设备,某些 CD-ROM 等)的情况下无法正常的启动.你可能仅仅需要修改当前正在使用的引导器(比如:Grub-Legacy,GRUB2 或 LILO 等)的配置. 一定要确保你有一个可以引导的光盘或者是 U 盘以备不时之需,否则万一电脑真的不能启动谁都救不了你.如果你需要建立可引导的设备,可以按照以下方法操作(跳转到 BLFS 从 libisoburn 软件包安装 xorriso). (译者注:其实你

《Linux From Scratch》第二部分:准备构建 第四章:最后的准备- 4.3. 添加 LFS 用户

         当以 root 用户登录时,犯一个小错误可能会破坏或摧毁整个系统.因此,我们建议在本章中以非特权用户编译软件包.你可以使用你自己的用户名,但要容易的话,就建立一个干净的工作环境,创建一个名为 lfs 的新用户作为新组(名字也是 lfs )的成员,并在安装过程中使用这个用户.以 root 用户运行以下命令来添加新用户: groupadd lfs useradd -s /bin/bash -g lfs -m -k /dev/null lfs 命令行选项的意思: -s /bin/ba

《Linux From Scratch》第一部分:介绍 第一章:介绍-1.1 如何构建LFS系统

         LFS 系统需要在一个已经安装好的 Linux 发行版(比如 Debian.OpenMandriva.Fedora 或 OpenSUSE)中构建.这个已有的 Linux 系统(即宿主)作为构建新系统的起始点,提供了必要的程序,包括一个编译器.链接器和 shell.请在安装发行版的过程中选择 "development(开发)"选项以便使用这些开发工具. 除了将一个独立发行版安装到你的电脑上之外,你也可以使用商业发行版的 LiveCD. 本书的第二章描述了如何创建一个的新

重走LFS之路:(三) 磁盘初始化与源码准备

重走LFS之路:(三) 磁盘初始化与源码准备 当硬件部分都准备就绪,就可以开始动手来准备软件了.不过在开始编译之前需要先做一件事,就像Windows中说的要格式化分区.虽然我真心不喜欢用Linux和Windows比,因为那样着实像是在英语和汉语之间来回翻译,想想就知道印欧语系和汉藏语系两门语言跨语系表述是多别扭的事. (题图来自: techradar.com) 在Linux中,我们把这个操作叫做建立文件系统.Linux使用的文件系统是ext系列和swap,其中swap只用作交换分区的格式,所谓交

LFS编译过程必备辅助手册(一)

LFS编译过程必备辅助手册(一) 很多人对Linux进行了一定的学习之后,都会有一种自己从头搭建一套Linux的想法,在这方面LFS和Gentoo都是不错的起点.不过虽然它们已经尽量提供详细文档了,但对于初学者来说还是存在一定的困难的. 因此本站特邀 PHILO (@看见微软我就跑)和 米油 两位同学将他们自己学习LFS的经验分享给大家,也希望大家一起来参与到LFS之旅中. 前言 LFS(Linux from scratch)是从源代码开始编译Linux操作系统.如果需要深度定制Linux操作系

《Linux From Scratch》第三部分:构建LFS系统 第九章:尾声- 9.2. 为 LFS 用户数添砖加瓦

截至此刻,你已经读完了这本书.你想要为 LFS 用户数添砖加瓦吗?赶快点击鼠标访问 http://www.linuxfromscratch.org/cgi-bin/lfscounter.php 输入用户名和第一次使用的 LFS 版本注册成为 LFS 用户吧. 赶快重启到 LFS 吧! 创建者:Gerard Beekmans 编辑者:Matthew Burgess 和 Armin K. 翻译团队:LCTT 译者/校对:dongfengweixiao,wxy 原文链接